Затемнение клавиатуры iPhone / iPad

Я пишу универсальное приложение, которое будет использоваться преимущественно ночью. Мне нужно будет отображать клавиатуру, но я не хочу, чтобы светлые цвета клавиатуры ослепляли пользователя и / или портили его ночное зрение. Я не хочу, чтобы у меня возникли проблемы с созданием пользовательской клавиатуры, поэтому я подумал, что решением может быть размещение UIView над клавиатурой и придание ему черного цвета фона с альфа 0,5 или что-то в этом роде, однако я не могу понять как получить UIView, чтобы закрыть клавиатуру. Кто-нибудь знает как это сделать? Разрешает ли Apple это?


person Vic320    schedule 02.01.2012    source источник


Ответы (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.

Вид маски, как вы говорите, представляет собой простой вид с черным фоном и некоторой прозрачностью. Вы также можете использовать стиль клавиатуры с предупреждениями, который дает черное пространство между клавишами.

К сожалению, этот метод не препятствует тому, чтобы маленькие мигания клавиш (большие клавиши, которые всплывают при нажатии клавиши) были на полной яркости.

person jrturton    schedule 02.01.2012
comment
Однако я заметил, что когда вы разделяете клавиатуру на iPad, это работает неправильно. Подозреваю, что мне нужно будет создать 2 UIView - по одному на каждую половину клавиатуры ... - person Vic320; 07.01.2012
comment
Хорошее место - как я уже сказал, я не делал этого на iPad, поэтому не заметил этого. Появление таких вещей, как разделенная клавиатура, - вот почему это хрупкий способ достижения этой цели. - person jrturton; 07.01.2012

попробуйте применить необходимые изменения к свойству inputView UITextFiled / UITextArea (тот, который используется).

person Tatvamasi    schedule 02.01.2012