2009-10-28 6 views
0

J'ai créé un UIButton par programmation et je veux créer une action pour gérer un seul tap et appuyer deux fois pour ce bouton.Double-Taper dans UIButton

Ma question est comment puis-je créer cette action, devrais-je créer des méthodes d'action séparées pour ces deux événements d'une seule action?

Pouvez-vous s'il vous plaît fournir un code très basique pour cet événement?

Merci beaucoup.

Répondre

7

Mon conseil est de ne pas parce que je ne pense pas que c'est une interface utilisateur acceptable si vous voulez l'obtenir sur l'App Store. Mais:

- buttonTapTimeout { 
    self.doubletap = NO; 
    // do your single tap action here 
} 

- buttonHandler { 
    if(self.doubleTap == NO) { 
    self.doubletap = YES; 
    // I'm making this up, you will have to look up the function to set a timer 
    self.tapTimer = newTimer(/*delay*/ 0.5, /*action*/ buttonTapTimeout); 
    } else { 
    [self.tapTimer cancel]; 
    self.doubleTap = NO; 

    // do your doubletap action here 
} 

Bien sûr, votre seule action ne peut avoir lieu avant que le délai acceptable pour un second branchement ait expiré.

+2

Pour le temporisateur, on peut utiliser -performSelector: withObject: afterDelay: et + cancelPreviousPerformRequestsWithTarget: selector: object: ou des méthodes similaires. http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html –

+0

Cela a très bien fonctionné pour moi, Thomas. Très pratique. (Pour tout le monde, notez que '+ cancelPreviousPerformRequestsWithTarget: selector: object' est une méthode NSObject * class *.) – zekel