Nous essayons de trouver un moyen de cacher le clavier, mais nous avons du mal à faire tirer la variable textFieldShouldReturn
Pourquoi?
C'est ce qui a été fait:
* .h
@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>
* .c
txtCardNumber.delegate = self;
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField setUserInteractionEnabled:YES];
[textField resignFirstResponder];
return YES;
}
De même, le délégué de la textField
est défini sur Propriétaire des fichiers dans Interface Builder. Une chose étrange est que la fonction - (void)textFieldDidEndEditing:(UITextField *)textField
de viewController fonctionne.
Comment faire pour que la dissimulation du clavier fonctionne?
J'ai eu exactement le même problème et c'est parce que j'ai oublié de définir le délégué du champ de texte dans le générateur d'interface sur 'propriétaire du fichier'.
J'ai eu le même problème et, comme l'a suggéré Warren Crowther, j'ai réussi à le résoudre en maintenant la touche CTRL enfoncée tout en faisant glisser le curseur de la zone de texte vers l'étiquette "Propriétaire du fichier".
(Mon dieu, Visual Studio me manque parfois ... !!)
(Toutes mes excuses pour avoir répété ce qui a déjà été dit, mais je pensais qu'une capture d'écran pourrait être utile!)
J'ai eu le jeu de délégué et tout. Mais j'utilisais une UITextView au lieu de UITextfield ...
Cela aidera peut-être quelqu'un qui essaie de comprendre pourquoi les méthodes de délégation ne sont pas renvoyées.
Je vois que vous le mettez dans votre code, mais pour les futurs visiteurs, ajoutez ceci à votre code:
yourTextField.delegate = self;
Je pense que vous utilisez xib. Si c'est le cas, vous devez également définir un délégué là-bas. Faites un clic droit sur votre UITextfiled dans xib et vous aurez l'option de délégué le faire glisser vers le propriétaire de votre fichier.
voici la réponse de Mike Gledhill et Warren Crowther mise à jour avec la capture d'écran xcode 5.
(pour définir le délégué UITextField, maintenez les touches Ctrl + glisser enfoncées dans UITextField jusqu'au bouton jaune "Propriétaire du fichier", comme indiqué dans l'image ci-dessous. Si le délégué UITextField n'est pas défini, la méthode textFieldShouldReturn n'est jamais appelée).
Accédez à l'inspecteur de connexion et connectez le délégué pour visualiser le contrôleur.
assurez-vous que votre MultiSalesViewController
implémente le protocole UITextFieldDelegate
:
@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>
essayez d'ajouter [self becomeFirstResponder];
après [textField resignFirstResponder];
edit: Juste une autre pensée .. Est-ce que votre UITextField
a une valeur définie pour returnKeyType
?
txtCardNumber.returnKeyType = UIReturnKeyDone;
je ne sais pas si cela doit être défini pour que la fonction fonctionne
Liste de contrôle pour le faire fonctionner:
Avez-vous défini votre contrôleur comme delegate sur Instance UITextField?
Assurez-vous que le contrôleur n'est pas désalloué en affectant une propriété (Autorelease) ou en le conservant explicitement.