yun*_*nas 11
您可以通过点击手势检测任意数量的点击.不需要玩NSTouches任何一个.对于所有寻求解决方案的用户来说,这是.
这些简单的代码行完成了单点击和双击功能.
UITapGestureRecognizer *doubleTapRecg = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(doubleTapped:)];
doubleTapRecg.delegate = self;
doubleTapRecg.numberOfTapsRequired = 2;
doubleTapRecg.numberOfTouchesRequired = 1;
[view addGestureRecognizer:doubleTapRecg];
UITapGestureRecognizer *tapRecg = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(tapped:)];
tapRecg.delegate = self;
tapRecg.numberOfTapsRequired = 1;
tapRecg.numberOfTouchesRequired = 1;
[view addGestureRecognizer:tapRecg];
[tapRecg requireGestureRecognizerToFail:doubleTapRecg];
[doubleTapRecg release];
[tapRecg release];
Run Code Online (Sandbox Code Playgroud)
小智 10
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
NSUInteger tapCount = [touch tapCount];
switch (tapCount) {
case 1:
[self performSelector:@selector(singleTapMethod) withObject:nil afterDelay:.4];
break;
case 2:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleTapMethod) object:nil];
[self performSelector:@selector(doubleTapMethod) withObject:nil afterDelay:.4];
break;
case 3:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doubleTapMethod) object:nil];
[self performSelector:@selector(tripleTapMethod) withObject:nil afterDelay:.4];
break;
case 4:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(tripleTapMethod) object:nil];
[self quadrupleTap];
break;
default:
break;
}
}
@end
Run Code Online (Sandbox Code Playgroud)
对我来说这个代码工作完全正常.... :)最后的帖子是在8月15日左右....但我正在经历同样的问题所以想分享我发现的解决方案....
在Apple提供的iPhone应用程序编程指南示例中:事件处理(由意大利用户提及)使用延迟0.3:
[self performSelector:@selector(handleSingleTap:) withObject:touchLoc afterDelay:0.3];
| 归档时间: |
|
| 查看次数: |
11474 次 |
| 最近记录: |