Eine elegantere Möglichkeit besteht darin, die Tastatur zu schließen, wenn der Benutzer irgendwo außerhalb des Tastaturrahmens tippt.
Stellen Sie zunächst die Ansicht Ihres ViewControllers im Identitätsinspektor in UIBuilder auf die Klasse "UIControl" ein. Ziehen Sie die Ansicht bei gedrückter Ctrl-Taste in die Header-Datei des ViewControllers und verknüpfen Sie sie als Aktion mit dem Ereignis als Touch Up Inside, z.
ViewController.h
-(IBAction)dismissKeyboardOnTap:(id)sender;
In der ViewController-Hauptdatei ist ViewController.m:
-(IBAction)dismissKeyboardOnTap:(id)sender
{
[[self view] endEditing:YES];
}
Mit ähnlichen Techniken können Sie zweimal tippen oder lange berühren. Möglicherweise müssen Sie Ihren ViewController als UITextViewDelegate festlegen und die TextView mit dem ViewController verbinden. Diese Methode funktioniert sowohl für UITextView als auch für UITextField.
Quelle: Big Nerd Ranch
BEARBEITEN: Ich möchte auch hinzufügen, dass die obige Technik bei Verwendung eines UIScrollView möglicherweise nicht so einfach über den Interface Builder funktioniert. In diesem Fall können Sie einen UIGestureRecognizer verwenden und stattdessen die darin enthaltene Methode [[self view] endEditing: YES] aufrufen. Ein Beispiel wäre:
-(void)ViewDidLoad{
....
UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tap:)];
[self.view addGestureRecognizer: tapRec];
....
}
-(void)tap:(UITapGestureRecognizer *)tapRec{
[[self view] endEditing: YES];
}
Wenn der Benutzer außerhalb der Tastatur tippt und nicht auf ein Eingabefeld tippt, wird die Tastatur geschlossen.