76 votes

Comment puis-je ignorer le clavier iOS?

J'ai un UITextfield que je voudrais rejeter le clavier pour. Je n'arrive pas à faire disparaître le clavier, peu importe le code que j'utilise.

192voto

benzado Points 36367

Si vous avez plusieurs champs de texte et ne sais pas lequel est le premier intervenant (ou tout simplement vous n'avez pas accès aux champs de texte à partir de là où vous êtes l'écriture de ce code), vous pouvez appeler endEditing: sur la vue parent contenant les champs de texte.

En vue du contrôleur de la méthode, il devrait ressembler à ceci:

[self.view endEditing:YES];

Le paramètre force le champ de texte à la démission du premier intervenant statut. Si vous utilisez un délégué pour effectuer la validation et voulais tout arrêter jusqu'à ce que le contenu du champ de texte, vous pouvez également le code comme ceci:

if ([self.view endEditing:NO]) {
    // on to the next thing...
} else {
    // text field must have said to first responder status: "never wanna give you up, never wanna let you down"
}

L' endEditing: est beaucoup mieux que de dire à la personne les champs de texte à l' resignFirstResponder, mais pour une raison que je n'ai même jamais découvert jusqu'à récemment.

65voto

Evan Mulawski Points 28536
 [myTextField resignFirstResponder]
 

Ici , deuxième paragraphe de la section Gestion du clavier.

9voto

user2216794 Points 21

Il y a des cas où aucun champ de texte est le premier intervenant , mais le clavier à l'écran. Dans ces cas, les méthodes ci-dessus ne parviennent pas à fermer le clavier.

Un exemple de la façon d'y arriver:

  1. pousser la ABPersonViewController à l'écran par programme; ouvrir n'importe quel contact;
  2. touchez le champ "note" (qui devient le premier intervenant et les feux du clavier);
  3. balayez vers la gauche sur tout autre terrain pour faire le bouton "supprimer" apparaît;
  4. par ce point, vous n'avez pas de premiers répondants parmi les champs de texte (il suffit de vérifier par programmation), mais le clavier est toujours là. L'appel à [vue endEditing:OUI] ne fait rien.

Dans ce cas, vous devez également demander l'avis du contrôleur pour quitter le mode édition:

[viewController setEditing:NO animated:YES];

6voto

Thomas.Benz Points 662

Dans votre fichier YourViewController.h du contrôleur de vue, assurez-vous de mettre en œuvre le protocole UITextFieldDelegate:

 @interface YourViewController : <UITextFieldDelegate>

@end
 

Ensuite, dans le fichier YourViewController.m, implémentez la méthode d'instance suivante:

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.yourTextField1 resignFirstResponder];
    [self.yourTextField2 resignFirstResponder];
    ...
    [self.yourTextFieldn resignFirstResponder];
}
 

6voto

naSh Points 131

Je vous suggère d'ajouter et d'action sur votre fichier d'en-tête:

 -(IBAction)removeKeyboard;
 

Et dans l'implémentation, écrivez quelque chose comme ceci:

 -(IBAction)removeKeyboard
{
[self.textfield resignFirstResponder];
}
 

Dans le fichier NIB, connectez-vous à partir de UITextFiled au propriétaire du fichier via l'option DidEndOnExit. De cette façon, lorsque vous appuierez sur la touche Entrée, le clavier disparaîtra.

J'espère que ça aide!

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