8

私は 2 つUITapGestureRecognizer:singleTapを持ってdoubleTapおり、2 つの異なるアクションで初期化されています。

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
[singleTap requireGestureRecognizerToFail:doubleTap];
[doubleTap setNumberOfTapsRequired:2];
[imageView addGestureRecognizer:doubleTap];
[imageView addGestureRecognizer:singleTap];

シミュレーターでアプリを実行すると、シングル タップは正しく応答しますが、ダブル タップは応答しません。ダブルクリックしても何も起こらないのですが、シングルタップのアクションが呼び出されていないため( のため)、iOSはダブルタップを認識していると思いますが、[singleTap requireGestureRecognizerToFail:doubleTap];なぜアクションを実行しないのか理解できませんhandleDoubleTap

4

2 に答える 2

6

次のコードは私のために働きます:

- (void)handleTap:(UIGestureRecognizer*)gr {
    NSLog(@"----------------- tap ----------------");
}
- (void)handleDoubleTap:(UIGestureRecognizer*)gr {
    NSLog(@"================= double tap ============");
}
- (XXXView*)createXXXView {
    XXXView *view = [[[XXXView alloc] init] autorelease];
    view.xxx=...;//irrelevant

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

    UIGestureRecognizer *tr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];

    [tr requireGestureRecognizerToFail:dtr];
    [view addGestureRecognizer:tr];
    [view addGestureRecognizer:dtr];

    return view;
}
于 2011-07-28T17:52:33.477 に答える