ジェスチャ レコグナイザーの を調べて、動作を変更しますlocationInView:
。
画像を 1 つの単位として処理する場合は、ジェスチャ認識エンジンのコールバックにこれを実装して、タップされた「葉」 (存在する場合) を決定します。
画像を複数の画像として処理する場合は、コールバックに実装することもできますし、デリゲートなどに実装して、gestureRecognizerShouldBegin:
描かれた葉の外側のタッチのイベントを抑制することもできます。
編集: ポイントがリーフ内にあるかどうかを判断するための支援も求めている可能性があることに気づきませんでした。@PhillipMills はこの点で正しいです。画像をどのように描画しているかを知る必要があります。
フォローアップ: これは、私の専門分野とは少し異なります。
(ヒット テストの観点から)最も簡単な方法は、Quartz の描画とCGPathContainsPoint()
. PNG としてレンダリングする必要がある詳細なグラフィックスがある場合は、ヒット テストを可能にするために (仮想的に) オーバーレイされる単純なパスを作成できます。
あなたの他のオプション、AFAIKは、数学的にヒットテストを行うことですが、基本的に再実装しますCGPathContainsPoint()
が、パスはありません。または、タッチポイントのピクセルの色を見てヒットテストを行うさまざまなトリックを採用します。このルートを使用すると、グーグルで検索するといくつかの有用な結果が得られますが、正直なところ、描画したものと同じくらい単純な形状の場合は、いくつかのコードを使用してUIBezierPath
コードで再作成するだけです.