UITexField (UITextInputTraits), formatteurs, nombres décimaux

ChachaChacha Membre
01:43 modifié dans API UIKit #1
Salut,

Argh, mais où sont mes NSFormatter ? Beuheuheu...
J'aimerais que l'utilisateur ne puisse rentrer que des nombres décimaux (avec virgule) dans un UITextField... Et je ne trouve pas !
UITextInputTraits est trop limité !
Une idée ? Une piste ?

+
Chacha

Réponses

  • ChachaChacha Membre
    01:43 modifié #3
    dans 1232018034:

    Ben non... là  c'est sur iPhone...
  • Philippe49Philippe49 Membre
    janvier 2009 modifié #4
    un truc basé sur
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    unichar c=[string characterAtIndex:0];
    if(! isdigit(c)) {
    return NO;
    }
    return YES;
    }

  • dilarogadilaroga Membre
    01:43 modifié #5
    Il semble que la classe NSNumberFormatter soit dispo sur iPhone OS d'après la doc d'apple (NSNumberFormatter chap. Overview => iPhone OS Note). Le companion guide accessible via cette page donne quelques exemples d'utilisation.
  • AliGatorAliGator Membre, Modérateur
    01:43 modifié #6
    D'autant que la solution de Philippe49 n'autorise que les chiffres, pas la virgule... (et si on autorise la virgule faut savoir si on autorise "." ou "," selon la NSLocale, et vérifier qu'il n'y en a qu'une et pas en tant que premier caractère, ... bref pas si simple.
  • ChachaChacha Membre
    01:43 modifié #7
    dans 1232025433:

    Il semble que la classe NSNumberFormatter soit dispo sur iPhone OS d'après la doc d'apple (NSNumberFormatter chap. Overview => iPhone OS Note). Le companion guide accessible via cette page donne quelques exemples d'utilisation.

    la difficulté n'est pas d'utiliser un NSNumberFormatter (ça je sais faire), mais de l'attribuer à  un UITextField... On dirait que ça n'est pas prévu, comme si les NSNumberFormatters ne pouvaient pas être employés dans l'interface de l'iPhone.
    @Philippe49 : mon souci est moins de valider l'entrée que de proposer un clavier restreint aux seuls caractères 1234567890,.
    Les UIKeyboardType ne sont aucunement configurables...
    S'il n'y a pas moyen, tant pis, je validerai à  la main.

    +
    Chacha
  • Philippe49Philippe49 Membre
    01:43 modifié #8
    dans 1232025926:

    @Philippe49 : mon souci est moins de valider l'entrée que de proposer un clavier restreint aux seuls caractères 1234567890,.

    Oui, l'idéal serait que textField.keyboardType=UIKeyboardTypeNumberPad; présente la virgule, et tu n'as pas trouvé de possibilité de configurer le keyboard. Ils sont ch... pénibles pour ça.
  • dilarogadilaroga Membre
    01:43 modifié #9
    On dirait que ça n'est pas prévu, comme si les NSNumberFormatters ne pouvaient pas être employés dans l'interface de l'iPhone.

    En effet, on ne peut pas les lier aussi simplement aux éléments graphiques que dans le sdk Mac OSX.
    D'autre part les types de claviers de saisie de l'iPhone ne sont pas configurables.
    Tu peux toujours coder ton propre clavier pour n'afficher que les éléments de saisie valides mais c'est du taf. Sinon en sous classant la classe UITextView tu peux rajouter un attribut de type NSFormatter, les getter/setter qui vont bien, et puis redéfinir les méthodes d'affichage pour qu'elles affichent la saisie de l'utilisateur au bon format.
  • ChachaChacha Membre
    01:43 modifié #10
    dans 1232030028:

    On dirait que ça n'est pas prévu, comme si les NSNumberFormatters ne pouvaient pas être employés dans l'interface de l'iPhone.

    En effet, on ne peut pas les lier aussi simplement aux éléments graphiques que dans le sdk Mac OSX.
    ...

    C'est ce que je craignais... bon, j'attends l'OS 2.3 alors :-)
    Merci.

    +
    Chacha
Connectez-vous ou Inscrivez-vous pour répondre.