8

我有两个UITapGestureRecognizer:singleTapdoubleTap使用两个不同的操作进行了初始化。

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 回答
6

我认为问题在于UIImageViewUILabel两者都覆盖了YES属性的默认值userInteractionEnabled,并将其设置为NO.

添加imageView.userInteractionEnabled = YES;并重试。

于 2011-05-10T18:23:53.753 回答