UILongPressGestureRecognizer est appelée deux fois lorsque vous appuyez sur vers le bas
Je suis détecter si l'utilisateur a appuyé pendant 2 secondes:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 2.0;
[self addGestureRecognizer:longPress];
[longPress release];
C'est comment je gère le long de la presse:
-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
NSLog(@"double oo");
}
Le texte "double oo" est imprimé deux fois quand j'appuyez pendant plus de 2 secondes. Pourquoi est-ce? Comment puis-je résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
UILongPressGestureRecognizer est un événement continu de reconnaissance. Vous avez à regarder l'état pour voir si c'est le début, le milieu ou la fin de l'événement et agir en conséquence. c'est à dire que vous pouvez jeter tous les événements après le début, ou seulement regarder le mouvement que vous avez besoin. À partir de la Classe De Référence:
Vous Pouvez Maintenant Suivre L'État Comme Ce
De vérifier l'état de la UILongPressGestureRecognizer juste ajouter une instruction if sur le sélecteur de la méthode:
Vous avez besoin de vérifier le bon état, puisqu'il y a des comportements différents pour chaque état. Très probablement, vous allez avoir besoin de le
UIGestureRecognizerStateBegan
état avec laUILongPressGestureRecognizer
....
Essaie juste de faire ceci:
Objective-C
Swift 2.2:
Voici comment le gérer dans Swift:
Swift 3.0:
votre geste gestionnaire reçoit des appels pour chaque état de geste. si vous avez besoin de mettre une case pour chaque état et de mettre votre code dans l'état requis.
On doit préférer à l'aide de l'interrupteur-cas au cours de if-else :