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.
Réponses
Trop de publicités?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.
[myTextField resignFirstResponder]
Ici , deuxième paragraphe de la section Gestion du clavier.
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:
- pousser la ABPersonViewController à l'écran par programme; ouvrir n'importe quel contact;
- touchez le champ "note" (qui devient le premier intervenant et les feux du clavier);
- balayez vers la gauche sur tout autre terrain pour faire le bouton "supprimer" apparaît;
- 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];
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];
}
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!