2011-01-08 2 views
4

Мне нужно знать текущий тип клавиатуры. Я был установкой переменной экземпляра вiPhone SDK: Как определить тип клавиатуры в UIKeyboardDidShowNotification?

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

Однако, тестирование показало, что это не всегда надежен из-за асинхронной природы уведомлений.

Что мне интересно, может ли кто-нибудь сказать мне, как определить текущий тип клавиатуры в пределах уведомление?

- (void)keyboardDidShow:(NSNotification *) { 
    // Need way to determine keyboard type here 
    } 

Thanks.

ответ

4

Если вы спрашиваете о языке клавиатуры, что может быть сделано только в iOS4.2 и выше, используя UITextInputMode class метод: +[UITextInputMode currentInputMode];

Если вы хотите, чтобы размер (потому что в зависимости от языка, размер может изменить), что легко, получить размер от объекта для ключа UIKeyboardBoundsUserInfoKey

- (void)keyboardWasShown:(NSNotification*)aNotification{ 
NSDictionary* info = [aNotification userInfo]; 
NSValue* aValue = [info UIKeyboardFrameEndUserInfoKey]; 
CGSize keyboardSize = [aValue CGRectValue].size; 
//I just got the size! ... do something with it 
} 
+0

Мне нужно знать, если UIKeyboardTypeNumberPad это правда или нет. Вы знаете, доступна ли эта информация в notification.userInfo? Я не мог сказать из документов, и я получил предупреждение о компиляции. –

+0

Вы пробовали, что является результатом + [UITextInputMode currentInputMode]; когда отображается клавиатура NumPad? – nacho4d

+0

Или попробуйте это уведомление: UITextInputCurrentInputModeDidChangeNotification – nacho4d

Смежные вопросы