Я пишу универсальное приложение, которое будет использоваться в первую очередь ночью. Мне нужно будет отобразить клавиатуру, но не хочу, чтобы светлые цвета клавиатуры закрывали глаза и/или портят ночное видение. Я не хочу, чтобы вы столкнулись с проблемой создания пользовательской клавиатуры, поэтому я решил, что решение может состоять в том, чтобы разместить UIView над клавиатурой и дать ей черный цвет фона с альфой 0,5 или что-то еще, я не могу понять как получить UIView для покрытия клавиатуры. Кто-нибудь знает как это сделать? Разрешает ли Apple это?iPhone/iPad Keyboard Dimming
ответ
Клавиатура находится как подвид нового окна, которое добавляется при ее появлении. Поиск немного взломанный и хрупкий (потребуется проверка в новых версиях iOS, как это было раньше), но он работает, и это разрешено (я делаю именно это для ночного режима в приложении, находящемся в магазине приложений) ,
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1]; // This assumes you aren't adding any new windows yourself
for(UIView *keyboard in tempWindow.subviews)
{
if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES) // This was different in an earlier version of iOS, and may well change again in the future!
{
[keyboard addSubview:maskView];
break;
}
}
Это делается в методе, который реагирует на UIKeyboardDidShowNotification
объекта. Я не пробовал это на iPad, это только код iPhone.
Вид маски, как вы говорите, просто вид с черным фоном и некоторой прозрачностью. Вы также можете использовать стиль клавиатуры предупреждения, который дает черное пространство между клавишами.
Этот способ не мешает маленьким нажатиям клавиш (более крупные клавиши, которые появляются, когда вы нажимаете клавишу), к сожалению, при полной яркости.
попробуйте применить необходимые изменения на inputView
свойства UITextFiled/UITextArea (тот, который используется).
Спасибо, но нет, это не работает ... – Vic320
Я могу подтвердить, что это также работает на iPad! Благодаря! – Vic320
Я заметил, однако, что, когда вы разделяете клавиатуру на iPad, это работает неправильно. Я подозреваю, что мне нужно будет создать 2 UIView - по одному на каждую половину клавиатуры ... – Vic320
Хорошее место - как я уже сказал, я не делал этого на iPad, поэтому я этого не заметил. Такие вещи, как разнесенная клавиатура, именно поэтому это хрупкий способ добиться этого. – jrturton