Je détecte 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];
Voici comment je gère la pression longue:
-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
NSLog(@"double oo");
}
Le texte "double oo" est imprimé deux fois lorsque j'appuie pendant plus de 2 secondes. Pourquoi est-ce? Comment puis-je réparer?
Pour vérifier l'état de UILongPressGestureRecognizer, ajoutez simplement une instruction if sur la méthode de sélection:
la source
Vous devez vérifier l'état correct, car il existe différents comportements pour chaque état. Vous aurez probablement besoin de l'
UIGestureRecognizerStateBegan
État avec leUILongPressGestureRecognizer
....
la source
Essayez ceci:
Objectif c
Swift 2.2:
la source
Voici comment le gérer dans Swift:
la source
Swift 3.0:
la source
votre gestionnaire de gestes reçoit un appel pour chaque état de geste. vous devez donc mettre un chèque pour chaque état et mettre votre code dans l'état requis.
Il faut préférer utiliser switch-case plutôt que if-else:
la source