recognizer iphone objective-c ios uigesturerecognizer

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 }