Cat*_*lun 8 tap uigesturerecognizer ios
我有两个UITapGestureRecognizer:singleTap并doubleTap用两个不同的动作初始化.
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];
Run Code Online (Sandbox Code Playgroud)
当我在模拟器中运行我的应用程序时,单击可以正确响应但不是双击!当我双击没有发生时,我认为iOS剂量识别双击,因为单击的动作没有被调用(由于[singleTap requireGestureRecognizerToFail:doubleTap];),但我不明白为什么它不做动作handleDoubleTap.
我认为这个问题是UIImageView和UILabel两个覆盖的默认值YES的userInteractionEnabled属性,并将其设置为NO.
添加imageView.userInteractionEnabled = YES;并重试.
以下代码适用于我:
- (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;
}
Run Code Online (Sandbox Code Playgroud)