In diesem Artikel geht es darum wie der Entwickler mit dem eingebauten Keyboard von iOS interagieren kann und inwieweit es möglich ist das Verhalten des Keyboards anzupassen.
Allgemein
Da keines der iOS Geräte ein Hardwarekeyboard besitzt werden alle Eingaben des Benutzers über ein software basiertes Keyboard getätigt. Dieses Keyboard wird von UIKit mitgeliefert und automatisch eingeblendet wenn es benötigt wird. Das hat den Vorteil, dass man sich um Sachen wie z.B. die Lokalisierung nicht kümmern braucht.
Ein Nachteil der sich daraus ergibt ist natürlich, dass das Keyboard in seinem Verhalten und Aussehen nur eingeschränkt anpassbar ist. Was für Möglichkeiten dem Entwickler zur Verfügung stehen wird im Folgenden behandelt.
Keyboard ein-/ausblenden
Alle Objekte die eine Texteingabe ermöglichen, in den meisten Fällen also UITextFields haben zwei Methoden von UIResponder geerbt die das Keyboard ein- bzw ausblenden.
[textField becomeFirstResponder]; /* Markiert das Texfeld und holt das Keyboard (wird automatisch aufgerufen wenn der Benutzer das Textfeld berührt)*/ [textField resignFirstResponder]; /* Das Textfeld wird deaktiviert und das Keyboard verschwindet solange kein anderes Textfeld den Status firstResponder bekommt. */
Text Input Traits

Die Text Input Traits sind eine Property Sammlung von UITextField mit denen man indirekt das Keyboard beeinflussen kann. Wie in der Grafik oben zu sehen holt sich das Keyboard die Daten aus den Input Traits des Textfeldes, sobald dieses Firstresponder wird, dazu gehören:

Input Traits Section im Interface Builder
Die Input Traits können im Interface Builder eingestellt werden oder über die entsprechenden Properties von UITextField programmatisch angesprochen werden.
So kann man dann z.B. die Art des Keyboards bestimmen (Zahlen, Buchstaben, URLs etc.) oder das Aussehen des Return Keys (Return, Search, Go etc.). Für nähere Informationen einfach in der Doku unter Input Traits suchen.
UITextField Delegate
Mit der Delegate Methode…
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
// Mache Zeug z.B. Suche starten
return YES;
}
kann Code ausgeführt werden, wenn der Return Key des Keyboards gedrückt wurde.
Notifications
Es gibt ein paar Keyboard Notifications die ausgelöst werden, wenn das Keyboard gezeigt bzw. ausgeblendet wird:
- UIKeyboardWillShowNotification
- UIKeyboardDidShowNotification
- UIKeyboardWillHideNotification
- UIKeyboardDidHideNotification
Beispiel:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow)
name:UIKeyboardWillShowNotification
object:nil];
- (void)keyboardWillShow {
// Code wird ausgeführt kurz bevor das Keyboard hoch kommt
}
Fazit
Wie oben zu sehen gibt es einige Möglichkeiten das Keyboard anzupassen und auf Keyboard Events zu reagieren. Allerdings wird es sicherlich auch Situationen geben bei denen das nicht ausreicht z.B. ein Taschenrechner. Was dem Entwickler dann natürlich immer noch offen steht ist das entwickeln einer eigenen Keyboard Klasse. Zu den oberen Möglichkeit, wie auch zu allen anderen Problemen empfehle ich nochmal die entsprechenden Artikel in der Apple Dokumentation.
{ Tags: Development, Entwicklung, Input Traits, iOS, iPhone, Keyboard, Notifications }
