2011-06-13 7 views
1

Je suis novice en matière de programmation iPhone et lorsque j'utilise ce code pour activer/désactiver un bouton, rien ne se passe. J'ai connecté mon bouton via un IBOutlet et je sais quand je le désactive dans viewDidLoad cela fonctionne. Je ne peux pas comprendre pourquoi cette méthode ne fonctionne pas.Activation/Désactivation d'un bouton

- (void) multiplicationButtonPressed { 
    if (multiplicationIsPressed) { 
     multiplicationButton.enabled = NO; 
    } else { 
     multiplicationButton.enabled = YES; 
    } 
} 
+1

Qu'est-ce que 'multiplicationIsPressed'? Peut-être que c'est toujours faux. –

+0

Définissez-vous la variable multiplicationIsPressed? Avez-vous connecté l'IBOutlet du bouton dans IB au bouton? –

+0

une fois que vous désactivez le bouton l'IBAction ne fonctionnera pas solitaire parce que vous avez désactivé le bouton pour le faire. Essayez d'utiliser l'état sélectionné pour votre but. voir ma réponse mise à jour. –

Répondre

1

Vérifiez que votre S'il vous plaît IBOutlet avait correctement connecté pour ce bouton ou non, puis

utiliser ce morceau de code

- (IBAction) multiplicationButtonPressed 
{ 
    multiplicationButton.selected = !multiplicationButton.selected; 
} 

Voilà. Vous n'avez besoin d'aucun drapeau booléen. Cela fonctionne comme bascule.

+0

La méthode multiplicationButtonPressed ne sera pas appelée si vous désactivez le bouton. Je ne pense pas que ça va marcher. –

+0

@Chandan shetty SP Désolé mon erreur. Merci pour l'info. –

+0

Merci pour l'information les gars c'était exactement le problème. Cela a tellement plus de sens maintenant. Sérieusement merci un milliard. –

0

Vérifiez que votre S'il vous plaît IBOutlet avait correctement connecté pour ce bouton ou non, puis

Utilisez ce code

- (IBAction) multiplicationButtonPressed 
{ 
    if (multiplicationIsPressed) { 
      multiplicationButton.userInteractionEnabled = NO; 
    } else { 
      multiplicationButton.userInteractionEnabled = YES; 
    } 
} 
0

Il y a un certain nombre de raisons, cela pourrait être un échec. Sans plus de contexte, nous ne pouvons que deviner.

  • Si multiplicationButtonPressed est appelé avant le chargement de la vue, le bouton n'a pas encore été créé.
  • Vous dites multiplicationButton est connecté comme IBOutlet dans IB, mais vous pourriez avoir tort. Est-il réellement connecté?
  • Si multiplicationButtonPressed est l'action d'un bouton ou d'un autre contrôle, il n'est probablement pas connecté à tout ce à quoi il est censé être connecté. Ceci est particulièrement probable puisque vous l'avez déclaré (void) plutôt que (IBAction), donc à moins que la déclaration dans le fichier .h ne corresponde pas, IB ne le verra même pas.
  • Si (comme son nom l'indique) multiplicationButtonPressed est l'action pour multiplicationButton lui-même, il ne sera jamais appelé lorsque le bouton n'est pas activé actuellement, car un bouton avec enabled défini sur NO ne répondra jamais aux touches.
  • Ou le même problème peut exister quelque part plus haut dans la hiérarchie de la vue: aucune sous-vue d'une vue avec userInteractionEnabled définie sur NO ne peut non plus répondre aux touches.
  • Ou il est possible que votre mise en page soit foirée, et quel que soit le bouton censé déclencher cet événement n'est pas réellement dans les limites de toutes ses vues parentes. Si la vue parent ne se clipse pas sur les limites, vous pouvez toujours voir le bouton mais ne pas interagir avec elle.
+0

Merci. Désolé d'avoir oublié plus d'informations. J'ai multiplicationButtonPressed mis en place comme une valeur BOOL. Je dois IBActions, si j'appuie sur le bouton de multiplication il désactive le bouton et le place à OUI. Si j'appuie sur le bouton =, il est réglé sur OUI, ce qui l'active à nouveau. Cependant, lorsque j'appuie sur le bouton =, il ne l'active plus jamais. La partie désactivante fonctionne bien cependant. –