2

これは私を完全に困惑させました!

メニューの表示/非表示用の Tap Gesture Recognizer があります...

また、画面間で左右にスワイプするための Swipe Gesture Recognizer もあります...

次に、画面上でビデオを再生するための MPMoviePlayerController もあります。

gestureRecognizer:shouldReceiveTouch:すべての UIControls とプレフィックス「MP」を持つものを実装して除外しています。

問題は、ムービー プレーヤー コントロールを左右にスワイプするたびにshouldReceiveTouch、タップ ジェスチャ レコグナイザーのみが通知され、スワイプ 1 では通知されないことです。また、NO を正しくトレースしますが、それでも STILL はスワイプ メソッドをトリガーします。

私は見ようとしましgestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizerたが、UIPanGestureRecognizerも含まれているため、本当に混乱しています...それはどこから来たのですか?

助けてください、私は疲れていて、締め切りが迫っています...そしてうまくいきません:(

皆さん、ありがとうございました!

:-ジョー

4

2 に答える 2

1

わかりました、申し訳ありません...shouldReceiveTouchメッセージを受信して​​いなかったのは、デリゲートを設定していなかったからです!! なんというか。タップジェスチャのデリゲートを設定していましたが、スワイプジェスチャではありませんでした。今ではすべて正常に動作しています。

ごめん!:-)

于 2010-11-26T10:45:08.543 に答える
1

私は同じ問題を抱えていました。これが私が問題を克服するためにしたことです。[self doSomething...] メソッドでアニメーションを実行し、アニメーションが終了すると、認識エンジンの有効状態を YES に戻します。正しい認識機能を有効に戻したことに注意してください。(ここでは (左/右) する必要があるため、gestureRecognizers 配列には 2 つのエントリがあります。

- (void)handleSwipeGesture:(UISwipeGestureRecognizer *)認識機能
{
    if (recognizer.state == UIGestureRecognizerStateEnded &&recognizer.enabled) {
        認識機能が有効になっている = いいえ;
        if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft)
        {
            [self doSomethingInteresting];
        }
        そうしないと {
            [self doSomethingElseInteresting];
        }
    }
}
[UIView transitionWithView:self.containerView]
          期間:kAnimationDuration
            オプション:UIViewAnimationOptionTransitionCurlDown
         animations:^{ あなたのアニメーション }
         完了:^(BOOL 完了) {
                if (self.containerView.gestureRecognizers.count) {
             ((UISwipeGestureRecognizer *)[self.containerView.gestureRecognizers objectAtIndex:0]).enabled = YES;
} }];
于 2010-11-25T09:04:27.677 に答える