Action quand le petit button croisé de UITextField est pressé

Je peux append un petit button croisé qui est utilisé pour effacer tout le text en un seul clic dans un UITextField avec le code suivant.

 textField.clearButtonMode = UITextFieldViewModeWhileEditing; 

J'ai également implémenté UITextFieldDelegate .

Je veux activer / désactiver le button droit de l' UINavigationBar fonction des changements dans mon UITextField . La règle est simple: si le champ de text comporte au less un caractère, activez simplement le button, sinon désactivez-le.

J'ai implémenté la méthode de délégué de textField:shouldChangeCharactersInRange: pour vérifier en permanence les besoins et mettre à jour le statut du button.

Maintenant, mon problème est, quand je clique sur le petit button croisé sur le champ de text, la méthode textField:shouldChangeCharactersInRange: n'est pas appelée. L'action requirejse est donc manquante. Comment puis-je identifier l'événement triggersur du button d'effacement?

Quelques images pour montrer de quoi je parle.

Phase initiale: ici, le button "Terminé" est désactivé car il n'y a pas de lettre dans le champ de text

Lorsque vous tapez une lettre, le button "Terminé" est activé

Maintenant, si je clique sur le button d'effacement, le button "Terminé" est toujours activé. C'est faux.

Utilisez la méthode déléguée textViewShouldClear: :

Demande au délégué si le contenu actuel du champ de text doit être supprimé.

 - (BOOL)textFieldShouldClear:(UITextField *)textField 

Paramètres

 textField 

Le champ de text contenant le text.

Valeur de return

YES si le contenu du champ de text doit être effacé; sinon, NO .

Discussion

Le champ de text appelle cette méthode en réponse à l'user appuyant sur le button d'effacement embedded. (Ce button n'est pas affiché par défaut mais peut être activé en modifiant la valeur dans la propriété clearButtonMode du champ de text.) Cette méthode est également appelée lorsque l'édition commence et que la propriété clearsOnBeginEditing du champ de text est définie sur YES .

L'implémentation de cette méthode par le délégué est facultative. S'il n'est pas présent, le text est effacé comme si cette méthode avait returnné YES . Disponibilité

 * Available in iOS 2.0 and later. 

Déclaré dans UITextField.h

Vous pouvez utiliser la méthode textFieldShouldClear: delegate pour gérer lorsque l'user appuie sur le button d'effacement.