NSTextField formatter à la volée
Rocou
Membre
Bonjour,
J'aimerai bien obliger un utilisateur à ne saisir que des chiffres dans un NSTextField.
Un grand classique.
J'ai essayé d'associer un NSNumberFormatter à mon NSTextField mais cela ne fonctionne pas du tout comme je le supposais. Tout ce que j'arrive à faire avec NSNumberFormatter, c'est de formater le résultat de la saisie mais pas empêcher une frappe de lettre par exemple.
Avec quoi peut-on réaliser cela?
J'aimerai bien obliger un utilisateur à ne saisir que des chiffres dans un NSTextField.
Un grand classique.
J'ai essayé d'associer un NSNumberFormatter à mon NSTextField mais cela ne fonctionne pas du tout comme je le supposais. Tout ce que j'arrive à faire avec NSNumberFormatter, c'est de formater le résultat de la saisie mais pas empêcher une frappe de lettre par exemple.
Avec quoi peut-on réaliser cela?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Oui mais attention, il ne faut pas regarder que le dernier caractère car l'utilisateur peut en ajouter plusieurs d'un coup avec un copier/coller ! /wink.png' class='bbc_emoticon' alt=';)' />
On peut mettre le curseur en plein milieu et taper une touche à cet endroit, ou même coller du texte issu du presse-papier (qui peut contenir plusieurs caractères), et même sélectionner du texte et le remplacer par un autre texte (qu'on tape ou par copier/coller)...
Bref c'est loin de se limiter au dernier caractère du TextField, ça peut être un caractère n'importe où, voire un texte complet copié/collé.
Oui, c'est que j'ai finalement fait mais je ne comprends pas du tout l'intérêt du "NSNumberFormatter" que l'on ajoute avec IB. A quoi sert de paramètrer le NSNumberFormatter si c'est pour réécrire une méthode qui teste la saisie?
Ce que j'avais fait. Mais en décochant/recochant, ça c'est mis à fonctionner... Enfin sans méthode appelée par notification, ça ne fonctionne pas du tout. Vraiment curieux.
Dans mon post du 12/02/2012 (Fonctionnement du délégué "controlTextDidChange"), j'avais le même problème que toi sachant en plus que je souhaitais limiter la valeur max saisie.
Voici comment j'ai résolu mon problème :
Parallèlement à cela, un "Number Formatter" teste les limites de la valeur numérique saisie (min et max).
Je n'ai pas trouvé plus simple mais cela fonctionne parfaitement.