2010-04-07 4 views
0

J'essaie de faire un bouton qui répond à un simple et double tap. J'essaie de le faire en utilisant la méthode myAction. Le problème est que la première fois que j'appuie sur le bouton, la méthode myAction n'est pas appelée.iPhone UIButton Appuyez sur

Quelqu'un peut-il dire pourquoi cela se produit et comment puis-je résoudre ce problème?

-(IBAction)myButton:(id)sender{ 
    UIButton *theButton = (UIButton *)sender; 
    [theButton addTarget:self action:@selector(myAction:forEvent:) forControlEvents:UIControlEventAllEvents]; 
} 

- (void)myAction:(id)sender forEvent:(UIEvent *)event { 
    NSLog(@"Touch events goes here"); 
} 

Merci,

I. Vasilev

Répondre

-1

Vous devez définir les fonctions dans votre fichier d'en-tête ("MyViewController.h, par exemple").

@interface bla bla { 

} 

- (IBAction)myButton:(id)sender; 
- (void)myAction:(id)sender forEvent:(UIEvent *)event; 

@end 
+0

J'ai myButton défini, mais je pense que j'ai oublié de définir myAction. Pensez-vous que ce soit moi le problème? La méthode myAction enregistre le résultat, sur mon 2ème, 3ème etc. – Ivan

+0

Je devrais le faire juste au cas où. Si cela ne résout pas votre problème, faites le moi savoir. – lugte098

1

Je suppose que vous liez l'événement avec myButton: expéditeur

Donc, cela signifie simplement:

When tap at myButton, 
    register `myAction` to the button's event handler. 

Vous pouvez résoudre ce problème par MonAction d'appel directement ou, tout simplement relier l'événement à myAction: à la place.

+0

Juste pour clarifier ce que Bird a dit, il semble que vous avez configuré le bouton dans Interface Builder pour envoyer le message d'action-myButton: chaque fois que vous cliquez dessus. Pourquoi ne pas simplement le configurer pour envoyer le message -myAction: à la place? – jlehr

+0

Hello Bird, J'ai résolu le problème en appelant directement mon action. Merci beaucoup. – Ivan

+0

jlehr, merci aussi pour votre clarification – Ivan

Questions connexes