6

私のアプリケーションでは、シングル、ダブル、トリプル タップを検出する必要があります。だから、私は UITapGestureRecognizer を使用しています。私は次のコードを使用しています:

    UITapGestureRecognizer *oneTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTapGestureOnAnimal:)];
    oneTap.numberOfTapsRequired = 1;

    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTapGestureOnAnimal:)];
    doubleTap.numberOfTapsRequired = 2;
    [doubleTap requireGestureRecognizerToFail:oneTap];

    UITapGestureRecognizer* tripleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTripleTapGestureOnAnimal:)];
    tripleTap.numberOfTapsRequired = 3;
    [tripleTap requireGestureRecognizerToFail:doubleTap];

    [self addGestureRecognizer:oneTap];
    [self addGestureRecognizer:doubleTap];
    [self addGestureRecognizer:tripleTap];

しかし問題は、常にシングル タップとダブル タップしか検出されないことです。トリプルタップをまったく検出していません....トリプルタップを検出するために私が行っている間違いを指摘できますか?

4

2 に答える 2

17

これで確認してください、

[oneTap requireGestureRecognizerToFail:doubleTap];
[oneTap requireGestureRecognizerToFail:tripleTap];
[doubleTap requireGestureRecognizerToFail:tripleTap];

メソッドのタップを切り替えて、上記の2行目を実行していませんでした。理想的には、ダブルタップとトリプルタップが失敗した場合にのみ1回のタップを検出する必要があります。また、トリプルタップが失敗した場合は、ダブルタップを検出する必要があります。

于 2012-12-13T19:09:24.903 に答える
0

2 つの requireGestureRecognizerToFail 呼び出しを次のように変更します。

[oneTap requireGestureRecognizerToFail:tripleTap];
[oneTap requireGestureRecognizerToFail:doubleTap];
[doubleTap requireGestureRecognizerToFail:tripleTap];  
于 2012-12-13T19:11:05.843 に答える