iphone - ios tap gesture recognizer
Cómo cancelar/restablecer un UIGestureRecognizer (3)
¡Entiendo! :-)
Tal vez alguien más corre en este problema, aquí está la solución:
if (waitForSomething) {
recognizer.enabled = NO;
recognizer.enabled = YES;
return;
}
El próximo evento será UIGestureRecognizerStateFailed
seguido de UIGestureRecognizerStateBegan
.
¿Cómo puedo cancelar o restablecer un UIGestureRecognizer
? El problema es que si configuro waitForSomething
en NO
durante un gesto, el siguiente evento es UIGestureRecognizerStateChanged
. Pero el primer evento debe ser UIGestureRecognizerStateBegan
.
Mi código:
- (void) panned:(UIPanGestureRecognizer *) recognizer {
if (waitForSomething) {
// cancel or reset the recognizer!
// because the next event should be UIGestureRecognizerStateBegan and not UIGestureRecognizerStateChanged
return;
}
switch (recognizer.state) {
case UIGestureRecognizerStateBegan:
// important initialisation code
break;
case UIGestureRecognizerStateChanged:
// do something
break;
}
}
¡Gracias por tu ayuda!
Si necesita hacer esto en más de un lugar:
en Swift
extension UIGestureRecognizer
{
func cancel() {
isEnabled = false
isEnabled = true
}
}
Swift 4:
if waitForSomething {
recognizer.isEnabled = false
recognizer.isEnabled = true
return
}