2011-07-06 20 views
19

¿cómo puedo cancelar o restablecer un UIGestureRecognizer? El problema es que si establezco waitForSomething en NO durante un gesto, el siguiente evento es UIGestureRecognizerStateChanged. Pero el primer evento debe ser UIGestureRecognizerStateBegan.Cómo cancelar/restablecer un UIGestureRecognizer

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 su ayuda!

Respuesta

37

¡Lo tengo! :-)

Tal vez alguien se ejecuta en este problema, aquí está la solución:

if (waitForSomething) { 
    recognizer.enabled = NO; 
    recognizer.enabled = YES; 
    return; 
} 

El próximo evento será seguido por UIGestureRecognizerStateFailedUIGestureRecognizerStateBegan.

+0

funciona como un encanto, gracias – n13

+3

Este es un gran consejo, e incluso recomendado por Apple en un video reciente WWDC –

0

Swift 4:

if waitForSomething { 
    recognizer.isEnabled = false 
    recognizer.isEnabled = true 
    return 
} 
Cuestiones relacionadas