142 votes

Détecter le retour arrière dans UITextField

Est-il possible de détecter le moment où la touche retour arrière/suppr est enfoncé dans l'iPhone clavier sur un UITextField qui est vide? Je veux savoir quand le retour arrière est appuyé uniquement si l'objet UITextField est vide.


Basé sur la suggestion de @Alex Reynolds dans un commentaire, j'ai ajouté le code suivant lors de la création de mon champ de texte:

[[NSNotificationCenter defaultCenter] addObserver:self
          selector:@selector(handleTextFieldChanged:)
              name:UITextFieldTextDidChangeNotification
            object:searchTextField];

Cette notification est reçue (handleTextFieldChanged fonction est appelée), mais toujours pas quand j'appuie sur la touche retour arrière dans un champ vide. Des idées?


Il semble y avoir une certaine confusion autour de cette question. Je veux recevoir une notification lorsque la touche retour arrière est pressée. C'est tout. Mais la solution doit également fonctionner lorsque le UITextField est déjà vide.

182voto

Jacob Caraballo Points 897

Sous-classe `` :

Maintenant il suffit d’ajouter MyTextFieldDelegate à votre et vos myDelegate à `` :

41voto

MattDiPasquale Points 23842

Mise à jour: Voir JacobCaraballo de réponse pour un exemple qui remplace -[UITextField deleteBackward].

Découvrez UITextInput, spécifiquement UIKeyInput a deleteBackward délégué méthode qui toujours est appelée lors de la suppression de la touche est enfoncée. Si vous êtes en train de faire quelque chose de simple, alors vous pourriez envisager de sous-classement UILabel et le rendant conforme à l' UIKeyInput protocole, comme le fait SimpleTextInput et ce iPhone UIKeyInput Exemple. Remarque: UITextInput et de ses parents (y compris UIKeyInput) sont uniquement disponibles en iOS 3.2 et versions ultérieures.

39voto

Andrew Points 1459

C’est peut-être un long shot, mais cela pourrait fonctionner. Essayez de définir le texte du champ texte à un caractère d’espace de largeur zéro `` . Lorsque vous appuyez sur retour arrière sur un champ de texte qui s’affiche vide, il sera réellement supprimer votre espace. Alors vous pouvez juste réinsérer l’espace.

Peut ne pas fonctionner si l’utilisateur parvient à déplacer le signe insertion vers la gauche de l’espace.

32voto

Jeffrey Loo Points 161

Code comme suit :

Enfin, n’oubliez pas de modifier la propriété de classe personnalisé du champ texte à « MyTextField »

18voto

Jerapong Nampetch Points 488

J’ai fondé autrement plus facile que `` solution. Même son petit peu étrange mais ça marche OK.

C’est un peu étrange pour comparer aboutit à -8. Peut-être je vais mal dans certains point de `` . Mais son droit travail  ;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X