Probleme mit UISwipeGestureRecognizer, UITapGestureRecognizer und MPMoviePlayerController :-(
-
27-09-2019 - |
Frage
Das hat mich völlig ratlos!
Ich habe eine Tap Gestenerkenner für Ein- / Ausblenden Menüs ...
Ich habe auch eine Swipe-Geste Recognizer für links Streichen nach und rechts zwischen den Bildschirmen ...
ich dann auch eine MPMoviePlayerController haben für auf dem Bildschirm zurück Video abspielen.
Ich bin der Umsetzung gestureRecognizer:shouldReceiveTouch:
und unter Ausschluss aller UIControls und alles, was das Präfix „MP“ hat.
Das Problem ist, wenn ich links Swipe und rechts auf den Video-Player Kontrollen bemerkt der shouldReceiveTouch
nur die Tap Gestenerkenner, NICHT der Swipe ein. Es zeichnet auch NO richtig, und dennoch löst die Swipe-Methode.
Ich habe versucht, auf gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer
suchen, aber das ist nur wirklich verwirrt mich, weil es auch eine UIPanGestureRecognizer enthält ... Wo kam das her?
Bitte Hilfe, ich bin müde und habe eine große Frist ... und kann es nicht funktionieren: (
Vielen Dank!
- Joe
Lösung 2
Okay, ich muss mich entschuldigen ... Der Grund, es nicht war, war shouldReceiveTouch
Nachrichten zu empfangen, weil ich nicht seine Delegierten Einstellung !! Was für ein numpty. Ich war die Einstellung der Delegierten für den Hahn Geste, aber nicht die Swipe ein. Nun, es ist alles gut funktioniert.
Es tut uns leid! : -)
Andere Tipps
würde ich das gleiche Problem. Hier ist, was ich tat, um das Problem zu überwinden. In der [self doSomething ...] Methoden habe ich einige Animationen und wenn die Animation beendet es setzt den aktivierten Zustand des Erkenners auf YES zurück. Seien Sie sich der Tatsache bewusst, dass Sie die richtige Erkennungs wieder auf enabled gesetzt! (Ich habe hier bis (links / rechts), so dass die gestureRecognizers Array 2 Einträge.
- (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; } }];