2011-01-08 13 views
4

Ich muss den aktuellen Tastaturtyp kennen. Ich setzte eine Instanzvariable iniPhone SDK: Wie bestimmt man den Tastaturtyp innerhalb einer UIKeyboardDidShowNotification?

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

Tests haben jedoch gezeigt, dass dies wegen der asynchronen Art von Benachrichtigungen nicht immer zuverlässig ist.

Was ich frage mich ist, wenn jemand mir sagen kann, wie man den aktuellen Tastaturtyp innerhalb eine Benachrichtigung ermitteln?

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

Danke.

Antwort

4

Wenn Sie über die Sprache der Tastatur fragen, die nur in iOS4.2 und oben durch die Verwendung UITextInputMode class Verfahren durchgeführt werden kann: +[UITextInputMode currentInputMode];

Wenn Sie die Größe wollen (weil abhängig von der Sprache kann die Größe ändern), das einfach ist, die Größe von Objekt erhalten für Schlüssel 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

ich muss wissen, ob UIKeyboardTypeNumberPad wahr ist oder nicht. Wissen Sie, ob diese Informationen in notification.userInfo verfügbar sind? Ich konnte nicht von den Dokumenten unterscheiden und ich bekam eine Warnung auf dem Kompilieren. –

+0

Haben Sie versucht, was ist das Ergebnis + [UITextInputMode currentInputMode]; wenn die NumberPad-Tastatur angezeigt wird? – nacho4d

+0

Oder versuchen Sie diese Benachrichtigung: UITextInputCurrentInputModeDidChangeNotification – nacho4d

Verwandte Themen