に画面領域を重複にジェスチャーを検出する私のアプリは数UIViews、B
、C
とD
、並んでおり、全てがエンベロープのUIView A
に含ま:下の図に示されるようにiOS5を
B
,C
およびD
のそれぞれにUIPinchGestureRecognizer
があります。私がやりたいことは、エリア全体で違うジェスチャーを認識することです(他のジェスチャーレコグナイザの動作を妨げることなく)。A
最適な方法は何ですか?私はiOS5 +をターゲットにしており、後方互換性は必要ありません。 のジェスチャーレコグナイザは、ピンチを検出したいが> 2本の指が関わっているので、おそらくカスタムジェスチャレコグナイザである必要があります。
思想:
A
のためのジェスチャー認識をインストールすると、うまく動作しない場合は、それがUIResponder
docs注意点としてtouchesBegan
などを使って、それを古い方法を行うことが可能であるかもしれない、あなたはサブクラスを持つことができますUIView
の場合は、接触に興味がない場合はレスポンダチェーンで渡すように[super touchesBegan:touches withEvent:event]
と呼んでください。
あなたの答えをありがとう。コンポーネント/コードのテストでヒットしますか?どのテクニックを使う? (touchesBeganなど)? – occulus
私はコードを投稿することはできませんが、私は説明しようとします。 両方のタッチを初期タッチ識別として使用し、ジェスチャーを識別されたコンポーネント内部のタッチの2次ハンドラとして認識します。 初期タッチ時に画面全体をテストします。あなたのすべての要素をループし、それらのどれがタッチされた座標内にあるのかを調べます。したがって、Bに触れた場合、ループはBとAの両方が接触座標内にあるのでループを見つけるはずです。次に、競合するGestureRecognizesを無効/有効にして、ジェスチャが完了した後でそれらを有効に戻します。 –