23 Jul 2010

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

input traits schema
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
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: , , , , , , }

Kommentar schreiben: