Problemas com UiswipeGestureRecognizer, UITAPGestureRecognizer e MPMoviePlayerController :-(
-
27-09-2019 - |
Pergunta
Isso me deixou completamente perplexo!
Eu tenho um reconhecedor de gesto de torneira para menus de show/oculto ...
Eu também tenho um reconhecedor de gesto de furto para deslizar para a esquerda e para a direita entre as telas ...
Também tenho um MPMovieplayerController para reproduzir vídeo na tela.
Estou implementando gestureRecognizer:shouldReceiveTouch:
e excluindo todos os uicontrols e qualquer coisa que tenha o prefixo "MP".
O problema é que, sempre que eu desligo para a esquerda e para a direita nos controles do jogador de filme, o shouldReceiveTouch
Observa apenas o reconhecedor do gesto da torneira, não o deslizamento. Também não rastreia corretamente, e ainda assim aciona o método de deslizamento.
Eu tentei olhar para gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer
Mas isso está realmente me confundiu, porque também contém um UiPangestureCognizer ... De onde isso veio?
Por favor, ajude, estou cansado e tenho um grande prazo ... e não posso resolver :(
Obrigado a todos!
: -Joe
Solução 2
Ok, devo me desculpar ... a razão pela qual não estava recebendo shouldReceiveTouch
As mensagens eram porque eu não estava definindo seu delegado !! Que entorpecimento. Eu estava definindo o delegado para o gesto da torneira, mas não o deslizamento. Agora está tudo funcionando bem.
Desculpe! :-)
Outras dicas
Eu eu o mesmo problema. Aqui está o que eu fiz para superar o problema. Nos métodos [self doomething ...], faço alguma animação e, se a animação terminar, ele define o estado ativado do reconhecedor de volta para sim. Esteja ciente do fato de que você define o reconhecedor correto de volta para ativado! (Aqui eu tenho que (esquerda/direita), para que a matriz GestureReCognizers tenha 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; } }];