Problemi con UISwipeGestureRecognizer, UITapGestureRecognizer e MPMoviePlayerController :-(
-
27-09-2019 - |
Domanda
Questo mi ha completamente sconcertato!
Ho un Tap Gesture Recognizer per mostrare / nascondere i menu ...
Ho anche un gesto Swipe Recognizer per strisciare a destra ea sinistra tra le schermate ...
Ho poi hanno anche un MPMoviePlayerController per la riproduzione di video sullo schermo.
I sono l'attuazione gestureRecognizer:shouldReceiveTouch:
ed escludendo tutti UIControls e tutto ciò che ha il prefisso "MP".
Il problema è che, ogni volta che Swipe a destra ea sinistra sui comandi del lettore di film, l'shouldReceiveTouch
accorge solo il Tap Gesture Recognizer, NON il colpo uno. E 'anche tracce NO correttamente, e tuttavia fa scattare ancora il metodo colpo.
Ho provato guardando gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer
ma questo è solo mi ha davvero confuso, perché contiene anche un'UIPanGestureRecognizer ... Da dove viene?
Si prega di aiuto, io sono stanco e hanno un grande scadenza ... e non riesco a lavorare fuori: (
Grazie a tutti!
: - Joe
Soluzione 2
Va bene, devo scusarmi ... La ragione per cui non riceveva messaggi shouldReceiveTouch
era perché non ero impostando il suo delegato !! Che numpty. Stavo installando il delegato per il gesto del rubinetto, ma non quello colpo. Ora è tutto bene lavoro.
Sorry! : -)
Altri suggerimenti
che avevo lo stesso problema. Ecco quello che ho fatto per superare il problema. Nel [sé DoSomething ...] metodi faccio un po 'di animazione e se le finiture di animazione si imposta lo stato abilitato della schiena riconoscitore su YES. Essere consapevoli del fatto, che si imposta il corretto torna riconoscitore al abilitato! (Qui ho a (sinistra / destra), quindi l'array gestureRecognizers ha 2 voci.
- (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; } }];