2010-07-26 4 views
0

J'ai donc implémenté un reconnaissance de gestes longue pression à 1 doigt, mais le reconnaisseur semble toujours manquer l'état UIGestureRecognizerStateBegan ... Si j'appuie longuement sans déplacer le doigt et le soulever, j'obtiens le message de débogage StateEnded. Si j'appuie longuement sur un doigt et que je le soulève, j'obtiens les messages de débogage StateChanged et StateEnded. Mais je ne vois jamais StateBegan.UILongPressGestureRecognizer manquant État UIGestureRecognizerStateBegan!

Ne pas avoir ce problème avec UIPanGestureRecognizer - Pan obtient tous les états de gestes corrects de Began-> Changed-> Ended.

- (void)handleLongPress:(UILongPressGestureRecognizer *)recognizer { 
    CGPoint location = [recognizer locationInView:self]; 

    switch (recognizer.state) { 
     case UIGestureRecognizerStateBegan: 
      NSLog(@"!!!!handleLongPress: StateBegan !!!!!"); 
      break; 
     case UIGestureRecognizerStateChanged: 
      NSLog(@"!!!!handleLongPress: StateChanged !!!!!"); 
      break; 
     case UIGestureRecognizerStateEnded: 
      NSLog(@"!!!!handleLongPress: StateEnded !!!!!"); 
      break; 
     default: 
      break; 
    } 
} 
+0

Votre code semble fonctionner correctement pour moi. Avez-vous configuré toutes sortes de dépendances entre vos reconnaisseurs de mouvements tactiles et panoramiques ou avez-vous également d'autres outils de reconnaissance sur cette vue? –

+0

aucune dépendance entre l'un de mes reconnaisseurs de gestes. et oui, j'ai plusieurs reconnaisseurs sur cette vue. Je suis perplexe ... :( – annie

Répondre

1

J'avais un problème similaire et il a été causé par la configuration UILongPressGestureRecognizer: l'exemple de code original que j'utilisais spécifié la numberOfTapsRequired = 1, et je devais rapide appuyez et relâchez, puis à long tap pour le faire fonctionner, au lieu de simplement appuyer et maintenir pendant quelques secondes. Lorsque j'ai supprimé le numberOfTapsRequired, le code s'est comporté comme prévu. J'espère que cela aide =)

+1

Ha, idiot moi! Je viens de voir la question originale a été posée il ya plus d'un an, mais de toute façon, j'espère que ma réponse aide quelqu'un d'autre là-bas ;-) – rtovars