uiswipegesterurerecognizer、uitapagesturerecognizer、mpmovieplayercontrollerの問題:-(
-
27-09-2019 - |
質問
これは私を完全に困惑させました!
ショー/非表示メニューのためのタップジェスチャー認識器があります...
また、画面間で左右にスワイプするためのスワイプジェスチャー認識器もあります...
また、画面上でビデオを再生するためのmpmovieplayercontrollerもあります。
私は実装しています gestureRecognizer:shouldReceiveTouch:
すべてのuicontrolsおよびプレフィックス「mp」を持つものを除外します。
問題は、映画プレーヤーのコントロールで左右にスワイプするたびに、 shouldReceiveTouch
タップジェスチャー認識者のみに気付くだけでなく、スワイプされたものではありません。また、正しくトレースしませんが、それでもスワイプメソッドをトリガーします。
見てみました gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer
しかし、それは本当に私を混乱させただけです。なぜなら、それにはuipangesturerecognizerも含まれているからです...それはどこから来たのですか?
助けてください、私は疲れていて大きな締め切りがあります...そしてそれを解決することはできません:(
皆さん、ありがとうございました!
: - ジョー
解決 2
さて、私は謝罪しなければなりません...それが受け取っていなかった理由 shouldReceiveTouch
メッセージは、私がその代表を設定していなかったからです!!なんて多くのもの。私はタップジェスチャーの代表者を設定していましたが、スワイプのジェスチャーではありませんでした。今ではすべて正常に機能しています。
ごめん! :-)
他のヒント
私は同じ問題です。これが私が問題を克服するためにしたことです。 [self dosomathe ...]メソッドでは、アニメーションを行い、アニメーションが終了した場合、有効な認識状態の状態をyesに戻します。正しい認識者を元に戻すように設定していることに注意してください! (ここでは(左/右)、GestureRecognizersアレイに2つのエントリがあることを確認する必要があります。
- (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; } }];