Pregunta

Esto me tiene completamente perplejo!

Tengo un gesto Toque el reconocedor para mostrar / ocultar los menús ...

También tiene un gesto de deslizar el reconocedor para deslizar el dedo de izquierda a derecha entre las pantallas ...

a continuación, también tienen un MPMoviePlayerController para la reproducción de vídeo de nuevo en la pantalla.

Me estoy poniendo en práctica gestureRecognizer:shouldReceiveTouch: y excluyendo todas las UIControls y cualquier cosa que tenga el prefijo "MP".

El problema es que cada vez que pase a la izquierda y la derecha en los controles del reproductor de vídeo, el shouldReceiveTouch única nota el grifo Gesto aprendidos, no el golpe. También traza NO correctamente, y sin embargo desencadena siendo el método swipe.

He intentado mirar gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer pero eso es sólo realmente me confunde, ya que también contiene un UIPanGestureRecognizer ... ¿De dónde viene eso?

Por favor ayuda, estoy cansado y tener una fecha límite importante ... y no puedo resolverlo: (

Gracias a todos!

: - Joe

¿Fue útil?

Solución 2

Está bien, debo disculparme ... La razón por la que no estaba recibiendo mensajes shouldReceiveTouch era porque no estaba poniendo su delegado !! Qué numpty. Yo estaba sentado el delegado por el gesto del grifo, pero no el de un solo golpe. Ahora todo está bien de trabajo.

Lo sentimos! : -)

Otros consejos

Me había el mismo problema. Esto es lo que hice para superar el problema. En el [auto doSomething ...] métodos que hago un poco de animación y si los acabados de animación que establece el estado de activación de la parte posterior reconocedor a SÍ. Ser consciente del hecho, que configura la parte posterior reconocedor correcto habilitado! (Aquí tengo a (izquierda / derecha), por lo que la matriz gestureRecognizers tiene 2 entradas.

- (void)handleSwipeGesture:(UISwipeGestureRecognizer *)recognizer
{
    if (recognizer.state == UIGestureRecognizerStateEnded && recognizer.enabled) {
        recognizer.enabled = NO;
        if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft)
        {
            [self doSomethingInteresting];
        }
        else {
            [self doSomethingElseInteresting];
        }
    }
}
[UIView transitionWithView:self.containerView
          duration:kAnimationDuration
            options:UIViewAnimationOptionTransitionCurlDown
         animations:^{ your animations }
         completion:^(BOOL finished) {
                if (self.containerView.gestureRecognizers.count) {
             ((UISwipeGestureRecognizer *)[self.containerView.gestureRecognizers objectAtIndex:0]).enabled = YES;
} }];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top