IB: fenêtre "NSNumberFormatter Info"
Old Salt
Membre
Bonjour,
Quelqu'un sait-il à quoi sert la case à cocher " ,<-->." qui est en bas à droite de la fenêtre "NSNumberFormatter Info" (laquelle apparaà®t quand on glisse un NSNumberFormatter dans un NSTextField) ?
Pour ma part, je n'arrive même pas à la cocher.
Merci...
Quelqu'un sait-il à quoi sert la case à cocher " ,<-->." qui est en bas à droite de la fenêtre "NSNumberFormatter Info" (laquelle apparaà®t quand on glisse un NSNumberFormatter dans un NSTextField) ?
Pour ma part, je n'arrive même pas à la cocher.
Merci...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ouais c'est bizarre, en voulant essayer ce truc, j'ai eu le même pb. Comment ca ce fait ? ???
Je crois que c'est pour permettre de définir le type séparateur de décimal pour le formatage . Entre le point (valeur par défaut ) et la virgule.
Si tu as la case à cocher "Localize" activé cela devient grisé car inutile. En effet il va prendre les préférences Internationales que tu as définis.
[Edit]
Effectivement il y a un petit bug dans IB (2.4.2), si on le malheur de d'avoir cliqué sur la case "Localize" avant ",<-->." et bien cela ne marche plus et oblige à détacher et remettre le NSNumberFormatter.. (bon et bien on va remplir un petit bug report bugreport.apple.com )
J'ai un autre problème, toujours avec NSNumberFormatter; je précise d'abord que je débute dans le monde du Cocoa (bien qu'étant grand consommateur de chocolat, depuis longtemps):
J'ai plusieurs "NSTextField" dans ma fenêtre, je saisis un nombre dans l'un deux et j'ai un bouton "OK" qui appelle ma méthode avec laquelle je multiplie ce nombre par des coefficients puis j'affiche les résultats dans les autres NSTextField.
Tout cela fonctionne bien en l'état, mais si je glisse un NSNumberFormatter sur chaque NSTextField, ça se gâte:
- si j'appuie sur "return" (équivalent clavier du bouton "OK"), tout va bien, le formatage s'effectue correctement dans tous les NSTextField
- si je clique sur "OK" sans avoir validé l'entrée par un "tab" ou un clic dans un autre NSTextField, le nombre saisi est mal pris en compte, seulement les milliers le sont (si je saisis 2000, le calcul s'effectue sur 2 et pas sur 2000; si je saisis moins de 1000, ça marche)
J'ai réalisé l'exemple Currency Converter d'Apple, il fonctionne, mais si je glisse un NSNumberFormatter dans le champs "dollarField", j'obtiens le même problème qu'avec mon application.
Je ne m'en sors pas, pourriez-vous m'aider ?
Par ailleurs, je constate une bizarrerie (?); si je coche Localize et Add 1000 separator, les formats apparaissent comme ci-dessous:
Positive  #,##0.00
Zero    0,00 (avec une virgule, pas un point)
Negative -#,##0.00
J'ai essayé de remplacer la virgule par un point (dans le format du Zero), ça ne change rien au fonctionnement de mon application.
Avez-vous aussi cette virgule (alors que l'on pourrait s'attendre à un point, comme dans Positive et Negative) ?
Il semble que ton textField attende de perdre le focus (avec tab ou enter) pour mettre à jour proprement son contenu.
S'il est bindé, il doit suffire d'utiliser les options "continuously set value" et "validate immediatly"
Sinon je ne sais plus trop si les régalges actions (Send Action On: Enter Only ou End Editing ) ont également une incidence sur la validation du contenu ...? Essaies toujours...
Tu peux également ajouter une ligne au début de ton "Action OK" avec [maTextField validateEditing]; ?
C'est normal, c'est une fois compilé que l'appli prend en compte le point ou la virgule.
Essaie de faire ceci :
- tape ta valeur dans ton TextField sous la forme 2.500 et 2,500 pour voir le résultat. Ce permettra de voir où se trouve le problème.
Je débute, je n'ai aucune idée sur la question de savoir s'il est bindé ou pas, ni sur la façon dont on le vérifie...
Il me semble logique de sélectionner "end editing", mais de toute façon c'est pareil avec "enter only".
Sans effet Â
Non, car je saisis mon nombre sous la forme 2500 (c'est le "formatter" qui le transforme en "2 500" ou "2,500" ou "2.500"), non ?
Pas exactement, ça dépend des cas. Il faut entrer la valeur dans le bon format et celle qui sort, c'est le formatter qui s'en charge. Si la valeur n'est pas au bon format, quand tu fais TAB, tu ne peux pas passer au champ suivant.
Par contre si je clique sur "OK" avant de changer de champs, j'obtiens n'importe quoi, ou rien, ou 2 ???
Avec 2500 ? Et en cliquant sur OK après avoir changé de champ ?
Comme je te l'avais promis, ça réagit fort ::)
ClicCool, c'est notre gourou des bindings (sorte de programmation pas liaisons), mais c'est peut-être pas nécessaire que tu t'y mettes tout de suiteÂ
Comme je te l'ai dit sur macBidouille, je ne suis pas arrivé à reproduire ton problème, le plus simple serait que tu mettes ton projet sur le forum, pour cela tu fais:
1) tu jettes tout le dossier build de ton projet à la poubelle (pour en réduire la taille au minimum)
2) tu fais un clic-droit sur le dossier de ton projet et tu choisis Créer une archive de ...., tu obtiens un fichier .zip ( il ne devrait faire que quelques dizaines de Ko maxi)
3) tu postes un nouveau message sur le forum et dans Options supplémentaires (en dessous de la zone Message) tu cliques sur Attacher - choisir le fichier et dans le panneau qui apparaà®t tu choisis le fichier zipper de ton projet.
A plus :-*
C'est ça qui m'intrigue.
Si ça venait d'un réglage du formatter y'a pas de raison que le résultats ne soit pas identique selon qu'on clique sur OK ou tape "enter" .
Ce qui change me semble être la séquence perte-Focus / Fin d'édition qui s'exécute quand tu tappes "Enter" et pas quand tu cliques sur "OK"
Et d'un autre coté un validateEditing n'y change rien non plus ! ???
Essaies voir avec:
[maTextField resignFirstResponder]; au débute de ton "action OK"
Par contre, je progresse légèrement, en tripotant les formats d'un NSNumberFormatter, je viens de réussir à faire fonctionner le NSTextField associé. Hélas, sans pouvoir reproduire le même tripotage dans les autres NSNumberFormatter.
Il semble que ce soit le format du Zero qui mettait la pagaille, mais je ne comprend pas pourquoi.
J'arrive donc à un résultat correct et reproductible en mettant les formats comme ci-dessous:
Positive  #,##0.00
Zero    0 00 (avec un espace, pas un point ni une virgule)
Negative -#,##0.00
(et en cochant Localize et Add 1000 separator)
Je l'ai également testé avec succès dans le Currency Converter.
Pourquoi faut-il donc cet espace dans le format du Zero ?  ???
Merci pour vos messages, qui m'ont incité à poursuivre du côté des formats et pas vers mon code.
Oui, c'est ce que son statut de "bindingologue" m'avait laissé entrevoir. :P