En mi aplicación, he agregado los nuevos Reconocedores de gestos que están disponibles en el SDK 3.2. Todo parece estar funcionando correctamente y el tiempo de respuesta en la pantalla ha sido muy rápido. Pero por alguna razón cuando agrego requireGestureRecognizerToFail
a algunos de mis gestos, hay un retraso muy visible cuando se activa el gesto. A continuación se muestra un fragmento del código que utilizo para crear los Reconocedores de gestos. ¿Alguien sabe por qué hay un retraso y cómo puedo solucionarlo? Estoy usando requireGestureRecognizerToFail
para evitar que el gesto SingleTap
se dispare cuando el usuario realiza un DoubleTap
.reconocedor de gestos del iPad - Respuesta diferida
- (void)createGestureRecognizers {
//Single Finger Double-Tap
UITapGestureRecognizer *singleFingerDTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSingleDoubleTap:)];
singleFingerDTap.numberOfTapsRequired = 2;
[super addGestureRecognizer:singleFingerDTap];
//Single Finger Tap
UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSingleTap:)];
singleFingerTap.numberOfTapsRequired = 1;
[singleFingerTap requireGestureRecognizerToFail:singleFingerDTap];
[self addGestureRecognizer:singleFingerTap];
//Two Finger Pan
UIPanGestureRecognizer *panGesture2 = [[UIPanGestureRecognizer alloc]
initWithTarget:self action:@selector(handlePanGesture2:)];
panGesture2.maximumNumberOfTouches = 2;
[super addGestureRecognizer:panGesture2];
//Single Finger Pan
UIPanGestureRecognizer *panGesture1 = [[UIPanGestureRecognizer alloc]
initWithTarget:self action:@selector(handlePanGesture1:)];
panGesture1.maximumNumberOfTouches = 1;
[panGesture1 requireGestureRecognizerToFail:panGesture2];
[super addGestureRecognizer:panGesture1];
[singleFingerDTap release];
[singleFingerTap release];
[panGesture1 release];
[panGesture2 release];
}
¿No es el comportamiento esperado? Si le pide que retrase su acción hasta que otro gesto falle, no podrá disparar hasta que esto termine. Y dos grifos tienen un lapso de tiempo entre ellos (toques! = Toques), por lo que necesita este lapso de tiempo para pasar. – Eiko
¡Gracias, eso tiene perfecto sentido! – Maddoxx