Я пишу универсальное приложение, которое будет использоваться преимущественно ночью. Мне нужно будет отображать клавиатуру, но я не хочу, чтобы светлые цвета клавиатуры ослепляли пользователя и / или портили его ночное зрение. Я не хочу, чтобы у меня возникли проблемы с созданием пользовательской клавиатуры, поэтому я подумал, что решением может быть размещение UIView над клавиатурой и придание ему черного цвета фона с альфа 0,5 или что-то в этом роде, однако я не могу понять как получить UIView, чтобы закрыть клавиатуру. Кто-нибудь знает как это сделать? Разрешает ли Apple это?
Затемнение клавиатуры iPhone / iPad
Ответы (2)
Клавиатура находится в виде части нового окна, которое добавляется при появлении. Найти его немного хакерский и хрупкий (потребуется проверка новых версий 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 (тот, который используется).