2012-01-02 4 views
4

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

ответ

6

Клавиатура находится как подвид нового окна, которое добавляется при ее появлении. Поиск немного взломанный и хрупкий (потребуется проверка в новых версиях 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.

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

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

+0

Я могу подтвердить, что это также работает на iPad! Благодаря! – Vic320

+0

Я заметил, однако, что, когда вы разделяете клавиатуру на iPad, это работает неправильно. Я подозреваю, что мне нужно будет создать 2 UIView - по одному на каждую половину клавиатуры ... – Vic320

+0

Хорошее место - как я уже сказал, я не делал этого на iPad, поэтому я этого не заметил. Такие вещи, как разнесенная клавиатура, именно поэтому это хрупкий способ добиться этого. – jrturton

0

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

+0

Спасибо, но нет, это не работает ... – Vic320