2010-05-21 6 views

Répondre

6

L'événement TouchDownInside déclenché, démarrer un NStimer. L'événement TouchUpInside déclenché annule le temporisateur. Faites en sorte que la minuterie appelle votre méthode à exécuter si l'utilisateur détient le bouton: le délai de la minuterie sera la durée nécessaire pour reconnaître la mise en attente.

+0

merci andiih – Momi

5

Vous pouvez également utiliser UILongPressGestureRecognizer.

Dans votre méthode d'initialisation (par exemple viewDidLoad), créer un système de reconnaissance gestuelle et l'attacher à votre bouton:

UILongPressGestureRecognizer *gesture = [[UILongPressGestureRecognizer alloc] 
    initWithTarget:self 
    action:@selector(myButtonLongPressed:)]; 
// you can control how many seconds before the gesture is recognized 
gesture.minimumPressDuration = 2; 
// attach the gesture to your button 
[myButton addGestureRecognizer:gesture]; 
[gesture release]; 

Le gestionnaire d'événements myButtonLongPressed: devrait ressembler à ceci:

- (void) myButtonLongPressed:(UILongPressGestureRecognizer *)gesture 
{ 
    // Button was long pressed, do something 
} 

Notez que UILongPressGestureRecognizer est un continuous event recognizer. Pendant que l'utilisateur maintient le bouton enfoncé, myButtonLongPressed: sera appelé plusieurs fois. Si vous voulez juste pour gérer le premier appel, vous pouvez vérifier l'état myButtonLongPressed::

if (gesture.state == UIGestureRecognizerStateBegan) { 
    // Button was long pressed, do something 
} 
Questions connexes