Reconocedor UIGesture, diferencia entre un toque simple y uno doble.

Agrego dos reconocedores de gestos a una vista con el código a continuación. Lo que quiero es: si el usuario toca una vez una cosa sucede. Si tocan dos veces, sucede otra cosa.

Tal como está, la acción de un solo toque ocurre si el usuario toca una o dos veces. En otras palabras, cuando presiono dos veces obtengo dos acciones, en lugar de una como preferiría

diferenciar

//gesture recognizer. UITapGestureRecognizer *tapRecognizerShowHideMenu = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doOneThing)]; [tapRecognizerShowHideMenu setDelegate:self]; [tapRecognizerShowHideMenu setNumberOfTapsRequinetworking:1]; [self.view addGestureRecognizer:tapRecognizerShowHideMenu]; UITapGestureRecognizer *tapRecognizerEditEffect = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doAnotherThing)]; [tapRecognizerEditEffect setDelegate:self]; [tapRecognizerEditEffect setNumberOfTapsRequinetworking:2]; [self.view addGestureRecognizer:tapRecognizerEditEffect]; 

Agregue esto a su código:

 [tapRecognizerShowHideMenu requireGestureRecognizerToFail:tapRecognizerEditEffect]; 

Cuando establece requireGestureRecognizerToFail: para un gestor de reconocimiento, está diciendo que solo debería reconocer el gesto si el otro gestor de reconocimiento no lo hizo. Así que aquí, le dices al solo toque que se reconozca solo cuando el doble toque no fue.

Creo que el siguiente enlace podría ser útil para usted, puede hacerlo por medio de Overriding Touch Event Handlers o usar Gesture Recognisers.

http://www.cimgf.com/2010/06/14/differentiating-tap-counts-on-ios/

Esto parece funcionar bastante bien, modificado del enlace dado por Anton en un comentario anterior.

¿Cómo reconocer oneTap / doubleTap en el momento?

 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch = [touches anyObject]; if (touch.tapCount == 1) { [self performSelector:@selector(showHideMenu) withObject:nil afterDelay:0.15]; } else if (touch.tapCount == 2) { [self performSelector:@selector(editEffect) withObject:nil afterDelay:0]; } } 

Tal vez sea más útil usar el reconocimiento de gestos de pulsación larga en lugar del reconocimiento de gestos de pulsación doble. Y entonces no tendrás tales conflictos.