UIGestureRecognizer Class Referenceを読むと、APIがタッチとジェスチャーのコントロールの優先順位を処理し、touchesBegan
と関連するメソッドがビューで呼び出されていないことを確認します。UIViewでジェスチャー認識とタッチの優先順位を設定する方法
ウィンドウは、ジェスチャ認識器に添付されたヒットテスト済みのビューにタッチイベントを配信する前に、ジェスチャ認識器にタッチイベントを配信します。一般に、ジェスチャ認識装置がマルチタッチシーケンスにおけるタッチの流れを分析し、そのジェスチャを認識しない場合、ビューはタッチの完全な補足を受け取る。 ジェスチャ認識プログラムがそのジェスチャを認識すると、ビューの残りのタッチはキャンセルされます。
私はビューにスワイプジェスチャーを追加しました。いくつかのロギングを使用して、1回のスワイプを実行すると、その方法がレポートされます。しかし、私のtouchesBegan
メソッドは、touchesCancelled
メソッドが期待どおりにメッセージを受け取っているにもかかわらず、ログを介して報告するとでもです。
ジェスチャーは、touchesBegan
またはtouchesMoved
が呼び出されないようにしたいと思います。
私の質問は、ジェスチャ認識器が実際にその状態に基づいて接触を遅延させるために、追加の設定が必要かどうかです。ドキュメントは、必要に応じて何かを提案しません。
私のセットアップは単純です:
swipeUpTwoFinger=[[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doubleSwipeUp:)]autorelease];
swipeUpTwoFinger.direction=UISwipeGestureRecognizerDirectionUp;
swipeUpTwoFinger.numberOfTouchesRequired=2;
[self addGestureRecognizer:swipeUpTwoFinger];
私も必ず認識機能を使用すると、ドキュメントは上記の言うことを信じている場合(このテストはは必要ありませんtouchesBegan
で処理する前に失敗した作るために、このテストを試してみました)しかしtouchesBegan
はまだこのテストの後にログ行を処理している:
if (swipeUpTwoFinger.state==UIGestureRecognizerStateFailed)
実際には、デフォルトでは有効になっていないことが判明しました。ありがとう。 – johnbakers