Une méthode plus élégante consiste à désactiver le clavier lorsque l'utilisateur appuie sur un élément situé 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é de UIBuilder. Faites glisser la vue dans le fichier d'en-tête du ViewController et liez-la en tant qu'action avec l'événement Touch Up Inside, par exemple :
ViewController.h
-(IBAction)dismissKeyboardOnTap:(id)sender;
Dans le fichier principal du ViewController, ViewController.m :
-(IBAction)dismissKeyboardOnTap:(id)sender
{
[[self view] endEditing:YES];
}
Vous pouvez demander un double tap ou un toucher long en utilisant des techniques similaires. Vous devrez peut-être définir votre ViewController comme un UITextViewDelegate et connecter le TextView au ViewController. Cette méthode fonctionne à la fois pour UITextView et UITextField.
Source : Big Nerd Ranch
EDIT : J'aimerais également ajouter que si vous utilisez un UIScrollView, la technique ci-dessus ne fonctionnera peut-être pas aussi facilement avec l'Interface Builder. Dans ce cas, vous pouvez utiliser un UIGestureRecognizer et appeler la méthode [[self view] endEditing:YES] à l'intérieur de celui-ci. Un exemple serait le suivant :
-(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 à l'extérieur du clavier et ne touche pas un espace de saisie, le clavier se ferme.
0 votes
Suivez les instructions de cet article de blog : iphonedevelopertips.com/cocoa/