Un modo più elegante è quello di chiudere la tastiera quando l'utente tocca da qualche parte al di fuori del riquadro della tastiera.
Innanzitutto, imposta la vista di ViewController sulla classe "UIControl" nella finestra di ispezione delle identità in UIBuilder. Tieni premuto il tasto Control per trascinare la vista nel file di intestazione di ViewController e collegarla come azione con l'evento come Ritocco interno, ad esempio:
ViewController.h
-(IBAction)dismissKeyboardOnTap:(id)sender;
Nel file ViewController principale, ViewController.m:
-(IBAction)dismissKeyboardOnTap:(id)sender
{
[[self view] endEditing:YES];
}
Puoi richiedere un doppio tocco o un tocco lungo usando tecniche simili. Potrebbe essere necessario impostare ViewController come UITextViewDelegate e connettere TextView a ViewController. Questo metodo funziona sia per UITextView che per UITextField.
Fonte: Big Nerd Ranch
EDIT: Vorrei anche aggiungere che se si utilizza un UIScrollView, la tecnica di cui sopra potrebbe non funzionare altrettanto facilmente tramite Interface Builder. In tal caso, è possibile utilizzare un UIGestureRecognizer e chiamare invece il metodo [[self view] endEditing: YES] al suo interno. Un esempio potrebbe essere:
-(void)ViewDidLoad{
....
UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tap:)];
[self.view addGestureRecognizer: tapRec];
....
}
-(void)tap:(UITapGestureRecognizer *)tapRec{
[[self view] endEditing: YES];
}
Quando l'utente tocca all'esterno della tastiera e non tocca uno spazio di immissione, la tastiera verrà chiusa.