2011-08-24 10 views
28

Tengo una vista. Deseo definir los tipos de gestos de grifo para ello.iphone - gesto de un solo toque conflicto con el doble

Entonces, si un usuario toca la vista, la vista hará A; y si un usuario hace doble clic en la vista, hará B sin hacer A.

Agregué dos UITapGestureRecognizer a la vista. el único toque es con numberOfTapsRequired = 1; y el doble toque es con numberOfTapsRequired = 2;

Puse también devolver NO para

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 
    return NO; 
} 

Sin embargo, he encontrado que entran en conflicto entre sí. Quiero decir, incluso si hago doble clic en la vista, se invocarán tanto A como B.

¿Cómo puedo resolver este problema?

Gracias

Respuesta

64

Puede solucionar esto añadiendo la siguiente línea de código. Esto asegurará que el reconocedor de un solo toque solo se dispare cuando el reconocedor de doble toque falló:

[singleTapRecognizer requireGestureRecognizerToFail:doubleTapRecognizer]; 
+0

muller, gracias. funciona –

+3

pero esto da un retraso para detectar un solo toque! :( – Mrug

+4

@Mrug: Es cierto, pero la única manera de estar 100% seguro de que era un solo y no un doble toque es esperar hasta que estemos seguros de que el usuario no está tocando por segunda vez. –

Cuestiones relacionadas