1

次の図に示すように、私のアプリにはいくつかのUIView、、、がB並んでいCD、すべてがエンベロープUIViewに含まれていAます。

ここに画像の説明を入力してください

、、、のUIPinchGestureRecognizerそれぞれにがBありCますDAまた、他のジェスチャ認識機能の動作を妨げることなく、領域全体で異なるジェスチャを認識したいと思います。

このための最良の戦略は何ですか?私はiOS5+をターゲットにしていますが、下位互換性は必要ありません。

またA、ピンチを検出したいのですが、2本以上の指が関係しているため、ジェスチャレコグナイザーはおそらくカスタムジェスチャレコグナイザーである必要があることにも注意してください。

考え:

のジェスチャレコグナイザーのインストールがAうまく機能しない場合は、touchesBeganなどを使用して古い方法でインストールできる可能性があります。UIResponderドキュメントUIViewに記載されているように、次の場合は、呼び出しだけのサブクラスを使用[super touchesBegan:touches withEvent:event]してレスポンダーチェーンに渡すことができます。 'タッチに興味がありません。

4

2 に答える 2

0

通常どおりにGestureRecognizeをAに追加します。

次に、触れたものをヒットテストすることから始める必要があります。

まず、アイテムのz-indexをテストする必要があります。たとえば、Bをタッチすると、関数は影響を受けるすべてのアイテム(この場合はAとB)に対してループ/ヒットテストを実行します。関数がAとB(B over A)の両方のヒットテストを検出した後、 z-indexを確認してください。たとえば、Bのz-indexは2で、次にA z-indexは1です。これで、Bはz-indexが高く、これは上にあることを意味するため、ユーザーがタッチしようとしたものであることがわかります。

ターゲット(B)を特定した後、そのGestureRecognizeを実行する前に、AのGestureRecognizeを一時的に無効にして、重複するGestureRecognize間の競合を排除する必要があります。Bタッチが完了/終了したら、AのGestureRecognizeを有効にします。

于 2012-04-14T11:10:32.053 に答える
0

少なくとも私が認識したいジェスチャについては、簡単で明白な方法でジェスチャ認識機能を追加するだけで機能することがわかります。もっと複雑になると思いました。

于 2012-04-17T15:47:28.570 に答える