Création d'une enum pour avoir 3 états pour un UIButton

KaroxysKaroxys Membre
mars 2013 modifié dans Apple Developer Programs #1
Bonjour,



J'essaye de créer un bouton à  3 états pour une application d'un client.



Enum de la classe UIControlState :


<br />
typedef NS_ENUM(UIControlState, UIControlLevelState)<br />
{<br />
	UIControlLevelStateLow	  = 0,<br />
	UIControlLevelStateMiddle   = 1,<br />
	UIControlLevelStateHigh	 = 2<br />
};<br />




Action du bouton UIStateButton, que j'ai customisé :


<br />
- (void)didTapOnStateButton:(UIStateButton *) button<br />
{<br />
	[button changeStateButton];<br />
}<br />




Voici le résultat que j'obtien, l'état UIControlLevelStateLow est celui par défaut. Une fois le tap effectué alors je change d'état en UIControlLevelStateMiddle. Ici, tout se passe bien mais quand je lance un second tap l'état du bouton ne bouge pas ...



J'ai raté un truc mais je n'arrive pas à  voir quoi ... Un petit coup de main serait le bienvenue image/smile.png' class='bbc_emoticon' alt=':)' />



Merci !



PI : Pour l'instant j'associe une couleur pour chaque état (Yellow, Orange, Red)



K.
Mots clés:

Réponses

  • LarmeLarme Membre
    changeStateButton, c'est quoi le code derrière ça ?
  • KaroxysKaroxys Membre
    mars 2013 modifié #3
    Pour l'instant seulement ça :




    <br />
    - (void)changeStateButton<br />
    {<br />
    	if (self.state &amp; UIControlLevelStateLow) {<br />
    		NSLog(@&quot;Yellow&quot;);<br />
    	}<br />
    	if (self.state &amp; UIControlLevelStateMiddle) {<br />
    		NSLog(@&quot;Orange&quot;);<br />
    	}<br />
    	if (self.state &amp; UIControlLevelStateHigh) {<br />
    		NSLog(@&quot;Red&quot;);<br />
    	}<br />
    }<br />
    




    L'état de départ est bien "Yellow"



    Dans les logs j'ai toujours "Orange" ...



    K.
  • jpimbertjpimbert Membre
    mars 2013 modifié #4
    Le bouton serait donc toujours dans l'état highlighted (UIControlStateHighlighted).

    Cela me paraà®t normal qu'un bouton soit dans cet état lorsqu'il est touché.
  • En fait j'essaye de créer mes propres UIControlState donc on ne parle pas de UIControlStateHighlighted image/smile.png' class='bbc_emoticon' alt=':)' />
  • Donc tu modifies le comportement de la classe UIControl.

    J'imagine que tu as dérivé les méthodes de traitement des événements ou bien tu l'as hackée avec le run-time Objective-C pour tripatouiller des méthodes privées. Mais si tu ne nous dit pas comment on ne pourra pas t'aider.
  • Finalement je vais prendre le chemin d'un tableau, une énumération n'est pas très cohérent par rapport au besoin.



    Mais si quelqu'un à  une idée sur le changement d'un état d'un bouton avec une énumération je suis preneur ! image/smile.png' class='bbc_emoticon' alt=':)' />



    K.
Connectez-vous ou Inscrivez-vous pour répondre.