Une manière plus élégante consiste à fermer le clavier lorsque l'utilisateur appuie quelque part en dehors du cadre du clavier.
Tout d'abord, définissez la vue de votre ViewController sur la classe "UIControl" dans l'inspecteur d'identité dans UIBuilder. Faites glisser la vue dans le fichier d'en-tête de ViewController et liez-la en tant qu'action avec l'événement comme Touch Up Inside, par exemple:
ViewController.h
-(IBAction)dismissKeyboardOnTap:(id)sender;
Dans le fichier principal de ViewController, ViewController.m:
-(IBAction)dismissKeyboardOnTap:(id)sender
{
[[self view] endEditing:YES];
}
Vous pouvez exiger un double tapotement ou une longue pression en utilisant des techniques similaires. Vous devrez peut-être définir votre ViewController pour qu'il soit un UITextViewDelegate et connecter le TextView au ViewController. Cette méthode fonctionne pour UITextView et UITextField.
Source: Ranch Big Nerd
EDIT: Je voudrais également ajouter que si vous utilisez un UIScrollView, la technique ci-dessus peut ne pas fonctionner aussi facilement via Interface Builder. Dans ce cas, vous pouvez utiliser un UIGestureRecognizer et appeler à la place la méthode [[self view] endEditing: YES]. Un exemple serait:
-(void)ViewDidLoad{
....
UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tap:)];
[self.view addGestureRecognizer: tapRec];
....
}
-(void)tap:(UITapGestureRecognizer *)tapRec{
[[self view] endEditing: YES];
}
Lorsque l'utilisateur touche en dehors du clavier et ne touche pas d'espace d'entrée, le clavier se ferme.