0

シングルタップとダブルタップの両方で UIImageView の UITapGestureRecognizer を追加しました。シングルタップの場合はメソッド A が呼び出され、ダブルタップの場合はメソッド B が呼び出されます。

初めてのみ完全に機能します。

初めて

UIImageViewをシングルタップすると、メソッドAが期待どおりに呼び出されました。

UIImageView をダブルタップすると、メソッド B が期待どおりに呼び出されました。

2回目

UIImageViewをシングルタップすると、メソッドAが期待どおりに呼び出されました。

UIImageView をダブルタップすると、メソッド B が再度呼び出されず、メソッド A のみが呼び出されました。どこで問題を起こしているのかわかりません。

    UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideHandle:)];
[gestureRecognizer setDelegate:self];
[userResizableView addGestureRecognizer:gestureRecognizer];
[gestureRecognizer release];

UITapGestureRecognizer *gestureRecognizer1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
gestureRecognizer1.numberOfTapsRequired = 2;

[gestureRecognizer1 setDelegate:self];
[userResizableView addGestureRecognizer:gestureRecognizer1];
[gestureRecognizer1 release];

[gestureRecognizer requireGestureRecognizerToFail:gestureRecognizer1];
4

1 に答える 1

-1

私はあなたのコードをテストしましたが、うまくいきました!

GestureRecognizer1 をリリースした後、requireGestureRecognizerToFail を追加しています。コメントに従ってテストし、この回答を編集したので、これは問題になりませんが、試してみてください。また、変数とメソッドに意味のある名前を付けます。

    UITapGestureRecognizer *doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc]
                            initWithTarget:self action:@selector(handleDoubleTap:)];
    doubleTapGestureRecognizer.numberOfTapsRequired = 2;
    [userResizableView addGestureRecognizer:doubleTapGestureRecognizer];

    UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc]
                            initWithTarget:self action:@selector(handleSingleTap:)];
    singleTapGestureRecognizer.numberOfTapsRequired = 1;
    [singleTapGestureRecognizer requireGestureRecognizerToFail: doubleTapGestureRecognizer];
    [userResizableView addGestureRecognizer:singleTapGestureRecognizer];

    [doubleTapGestureRecognizer release];
    [singleTapGestureRecognizer release];
于 2012-09-20T14:58:46.393 に答える