65 votes

comment masquer le clavier lorsque la zone vide est touchée sur l'iphone

Normalement, lorsque vous touchez la zone de saisie de texte, le clavier s'affiche et lorsque vous touchez la zone vide de l'écran, le clavier disparaît. Comment faire pour que cela se produise ?

tout comme ce que nous avons vécu lors de l'iphone safari...

Merci.

105voto

HitScan Points 4761

Méthode actualisée (recommandée) :

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
   [self.view endEditing:YES];
}

Cela mettra fin à l'édition sur toutes les sous-vues et démissionnera le premier intervenant.

Autre méthode (énumération de toutes les vues de texte) :

Voici un pas à pas pour cela :

Ajoutez un IBAction à votre contrôleur de vue, tel que - (IBAction)backgroundTouch :(id)sender

Dans l'action backgroundTouch, vous devez envoyer le message resignFirstResponder à toutes les zones de texte de votre vue. C'est regrettable mais nécessaire car il n'y a actuellement aucun moyen de récupérer l'objet qui a le statut FirstResponder. Cela devrait ressembler à quelque chose comme ceci :

- (IBAction)backgroundTouch:(id)sender {
  [someTextBox resignFirstResponder];
  [anotherTextBox resignFirstResponder];
}

Ajoutez un contrôle de bouton à la vue, en le dimensionnant de manière à couvrir toute la zone visible (à l'exception de la barre d'état ou de tout contrôleur d'onglet ou de navigation). Sélectionnez le bouton, puis allez dans le menu Layout et sélectionnez Send To Back. Définissez également le Type du bouton sur personnalisé, qui est invisible si vous ne fournissez pas de code de dessin spécifique pour ce bouton.

Reliez l'événement Touch Up Inside du bouton à l'action backgroundTouch : et essayez-le.

63voto

Shahid Aslam Points 1343

Utilisez cette solution simple

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
   [self.view endEditing:YES];
}  

Fonctionne avec UITextField, UITextView et toutes les sous-vues.

16voto

alex Points 169

Oubliez de mettre un bouton en arrière-plan, il y a une solution simple.

(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.textfieldName resignFirstResponder];
}

4voto

Il y a un tutoriel sur ce problème (qui concerne aussi le clavier numérique sans touche DONE) sur aquí

3voto

Val Points 86

Pour > iOS 4.0 il y a une autre solution (et peut-être meilleure) Avec ce code, il suffit de tapoter n'importe où dans la vue pour masquer le clavier.

// single tap to resign keyboard
UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithBlock:^(UIGestureRecognizer *rec){
            [input_text resignFirstResponder];
        }];
self.singleTapRecognizer.numberOfTapsRequired = 1;
self.singleTapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:singleTapRecognizer];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X