Création d'une zone de saisie cliquable mais non éditable

peyrussepeyrusse Membre
02:09 modifié dans API UIKit #1
Bonjour,


J'ai un écran avec trois zones de saisies, chaque zone sera complétée par la valeur sélectionné dans une
UIPickerView de 3 colonnes.Je souhaite que ces zones aient un look avec des bords arrondis et ne soit pas
éditable.

Si j'utilise des champs de saisie de type UITextField alors automatiquement le clavier apparaà®t lorsque je clique dans l'une de ces zones. J'ai donc opté pour des champs de type UIButton et lorsque je clique sur un champ je fais apparaà®tre le UIPickerView pour que l'utilisateur sélectionne une valeur. Seul problème
qui reste est que le texte du bouton est centré.

Existe-t-il une solution autre pour résoudre mon problème qui je l'espère est clair pour vous tous.

Merci pour votre réponse.

Réponses

  • bnkbnk Membre
    02:09 modifié #2
    Salut,

    As tu essayé de mettre un UILabel ou un UITextField désactivé sous un UIButton (transparent) ?
    Comme ça tu balance ton UIPickerView quand l'utilisateur touche le bouton transparent et tu remplis ton TextField en dessous avec le code.

    Il y a peut être un solution qui fait moins bricolage mais ça devrait fonctionner.
  • peyrussepeyrusse Membre
    02:09 modifié #3
    ça ne marche pas. Il faut mettre le Alpha à  Zéro pour rendre le bouton transparent du coup on ne peut pas cliquer dessus. La juxtaposition du UITextField et du UIButton ne permet pas de rendre visible le UITextField.

    Apparemment, cette solution n'est pas possible (à  moins que je ne sache pas comment faire ?).

    As-tu une autre solution ?
  • AliGatorAliGator Membre, Modérateur
    02:09 modifié #4
    Le plus propre à  mon avis c'est de simplement mettre la propriété "enabled" de ton UITextField à  NO. Comme ça tu n'auras pas le clavier.
    Après le mieux est sans doute de sous-classer UITextField pour détecter les clics dedans
  • bnkbnk Membre
    02:09 modifié #5
    Sinon je viens de tester ma bidouille et ça fonctionne.

    Je te joins la source, mais la solution d'Aligator semble en effet plus conventionnelle.
  • peyrussepeyrusse Membre
    juillet 2009 modifié #6
    Merci à  tous les deux. La solution d'Alligator semble la plus propre, sauf qu'une fois que j'ai coché la propriété enable à  false, la zone de saisie n'est plus cliquable, comment déclencher alors l'affichage de la UIPickerView.

    Tu parles de sous classer la classe UITextField, peux-tu m'en dire un peu plus ou me fournir un bout de code. Merci d'avance.

    En effet BNK, ta solution fonctionne merci pour l'exemple.
  • bnkbnk Membre
    juillet 2009 modifié #7
    Je pense qu'en disant que tu dois sous classer UITextField Aligator parle d'héritage.

    Tu fais donc faire hériter monUITextFieldPerso d'UITextField puis tu modifies les méthodes dont tu as besoin dans ta nouvelle classe monUITextFieldPerso.

    <br /><br />//DANS TON .H<br />#import &lt;Foundation/Foundation.h&gt;<br /><br />@interface monUITextFieldPerso : UITextField<br />{<br /> }<br />@end<br /><br />//DANS TON .M<br /><br />#import &quot;monUITextFieldPerso.h&quot;<br />@implementation monUITextFieldPerso<br /><br />//ici tu pompes une méthode de la doc UITextField et tu changes ce que tu veux<br /><br />@end<br />
    
  • peyrussepeyrusse Membre
    juillet 2009 modifié #8
    J'ai fait comme tu l'indiques et rajouté une méthode touchesBegan sur laquelle je demande à  ce que le UIPickerView s'affiche mais comme le UITextField est non cliquable, je n'arrive pas à  déclencher l'évènement ...

    Help please je suis bloqué.
Connectez-vous ou Inscrivez-vous pour répondre.