0

いくつかの異なるジェスチャレスポンダーに応答するように設定したい画像があります。たとえば、画像の一部に触れた場合、1つのセレクターを呼び出し、別のセレクターを画像の別の部分に呼び出します。

UIGestureRecognizerとクラスを調べましたUITapGestureRecognizerが、それらに関連付ける画像ゾーンを指定する方法が見つかりませんでした。これはiOSで可能ですか?もしそうなら、どのクラスを使用することを検討する必要がありますか?

4

2 に答える 2

3

最も簡単な解決策は、画像の上に非表示のビューを配置し、ジェスチャーレコグナイザーを配置することです。

それが不可能な場合は、ジェスチャレコグナイザーのタップハンドラーでlocationInViewを確認し、ユーザーがタップした場所に基づいて何をしたいかを理解する必要があります。

于 2012-01-05T17:30:16.373 に答える
2

プロパティを使用しlocationInView:てタップが発生した場所を特定し、条件付きでメソッドを呼び出します。CGRectこれを行うには、ヒットエリアに対応するいくつかのを設定します。次に、このCGRectContainsPoint()関数を使用して、タップがヒット領域の1つに着地したかどうかを判別します。

タップジェスチャレコグナイザーアクションは次のようになります。

- (void)tapGestureRecognized:(UIGestureRecognizer *)recognizer
{
    // Specify some CGRects that will be hit areas
    CGRect firstHitArea = CGRectMake(10.0f, 10.0f, 44.0f, 44.0f);
    CGRect secondHitArea = CGRectMake(64.0f, 10.0f, 44.0f, 44.0f)

    // Get the location of the touch in the view's coordinate space
    CGPoint touchLocation = [recognizer locationInView:recognizer.view];

    if (CGRectContainsPoint(firstHitArea, touchLocation))
    {
        [self firstMethod];
    }
    else if (CGRectContainsPoint(secondHitArea, touchLocation))
    {
        [self secondMethod];
    }
}
于 2012-01-05T18:21:11.923 に答える