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.

Était-ce utile?

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é sur YES.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top