Action lorsque le petit bouton croix de UITextField est pressée
-
25-10-2019 - |
Question
Je peux ajouter un petit bouton croix qui est utilisé pour effacer tout le texte en un seul clic dans un UITextField
avec le code suivant.
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
Je UITextFieldDelegate
également mis en œuvre.
Je veux activer / désactiver le bouton de la barre de droite du UINavigationBar
selon les changements dans ma UITextField
. La règle est simple:. Si le champ texte a au moins un caractère, juste activer le bouton, sinon le désactiver
Je mis en œuvre la méthode UITextField
délégué du textField:shouldChangeCharactersInRange:
pour vérifier en permanence l'exigence et mettre à jour l'état du bouton.
Maintenant, mon problème est, quand je clique sur le petit bouton croix sur le champ de texte, la méthode textField:shouldChangeCharactersInRange:
est pas appelée. Ainsi, l'action requise est manquante. Comment puis-je identifier l'événement de succès du bouton clair?
Quelques photos pour montrer ce dont je parle.
Phase initiale: ici, le bouton « Terminé » est désactivé car il n'y a pas de lettres dans le champ de texte
Lors de la saisie d'une lettre, le bouton « Terminé » est activé
Maintenant, si je clique sur le bouton clair, le bouton « Terminé » est toujours activée. Ceci est faux.
La solution
Utilisez la méthode délégué textViewShouldClear:
:
demande si le délégué contenu actuel du champ de texte devrait être enlevé.
- (BOOL)textFieldShouldClear:(UITextField *)textField
Paramètres
textField
Le champ de texte contenant le texte.
Valeur de retour
YES
si le contenu du champ de texte doivent être effacées; sinon,NO
.Discussion
Le champ texte appelle cette méthode en réponse à l'utilisateur en appuyant sur la bouton intégré clair. (Ce bouton est affiché par défaut, mais peut être activée en changeant la valeur de la propriété
clearButtonMode
du champ de texte.) Cette méthode est aussi appelée lors de l'édition commence et propriétéclearsOnBeginEditing
du champ de texte est réglé surYES
.La mise en œuvre de cette méthode par le délégué est facultative. Si c'est pas présent, le texte est effacé comme si cette méthode était revenu
YES
. Disponibilité* Available in iOS 2.0 and later.
Dans Déclaré UITextField.h
Autres conseils
Vous pouvez utiliser la méthode de délégué textFieldShouldClear:
pour gérer lorsque les robinets de l'utilisateur sur le bouton clair.