1

画面上のシングルタップとダブルタップの両方を処理するために、2つの異なる TapGestureRecognizer を使用しています。これはコードです:

UITapGestureRecognizer *tapGR =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
    [tapGR setDelegate:self];
    [tapGR setNumberOfTapsRequired:1];
    [self addGestureRecognizer:tapGR];


    UITapGestureRecognizer *doubleTapGR = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleDoubleTap:)];
    [doubleTapGR setNumberOfTouchesRequired:2];
    [self addGestureRecognizer:doubleTapGR];

    [tapGR requireGestureRecognizerToFail : doubleTapGR];

    [tapGR release];
    [doubleTapGR release];

[tapGR requireGestureRecognizerToFail: doubleTapGR] と指定しても、「handleTap」セレクターが実行されます。間違いはどこですか?

4

3 に答える 3

5

あなたはミスを犯しました!を使用する代わりに、setNumberOfTouchesRequiredメソッドを使用しました。修正されたコードは次のとおりです。doubleTapGRsetNumberOfTapsRequired

UITapGestureRecognizer *tapGR =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
[tapGR setDelegate:self];
[tapGR setNumberOfTapsRequired:1];
[self addGestureRecognizer:tapGR];


UITapGestureRecognizer *doubleTapGR = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleDoubleTap:)];
[doubleTapGR setNumberOfTapsRequired:2];
[self addGestureRecognizer:doubleTapGR];

[tapGR requireGestureRecognizerToFail : doubleTapGR];

[tapGR release];
[doubleTapGR release];

よろしくお願いします ;)

于 2012-06-18T16:00:42.587 に答える
1

省略した可能性があると思います:

[doubleTapGR setDelegate:self];
于 2012-06-18T15:52:25.063 に答える
0

私は自分が本当に愚かであることに気づきました:)

私が書いた:

[doubleTapGR setNumberOfTouchesRequired:2];

それ以外の:

[doubleTapGR setNumberOfTapsRequired:2];

この回答は自由に削除してください。申し訳ありませんが、StackOverflow です。

于 2012-06-18T15:52:52.000 に答える