我正在尝试制作一个由触摸控制的iPhone应用程序。我也希望当用户双击时,启动电源。这是我到目前为止所知道的:
UITapGestureRecognizer *powerRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(usePower)];
powerRecognizer.delaysTouchesEnded = NO;
powerRecognizer.numberOfTapsRequired = 2;
powerRecognizer.numberOfTouchesRequired = 1;
[self.view addGestureRecognizer:powerRecognizer];
[powerRecognizer release];但问题是,当我双击时,我的touchesEnded:withEvent:方法只触发一次,而我的touchesBegan:withEvent:方法触发两次。由于touchesBegan:设置了计时器,而touchesEnded:使其无效,因此当touchesEnded:仅触发一次时,计时器仍在运行。我该如何解决这个问题呢?
发布于 2010-10-04 22:52:17
以下是我检测双击的解决方案:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
if([touch tapCount] == 2) {
// do sth
}
}发布于 2010-10-04 05:37:02
向视图添加手势识别器会更改几种触摸处理方法的行为,包括touchesEnded:WithEvent:。
从上面的链接:
观察后,触摸对象到附加视图的传递或它们的处置会受到cancelsTouchesInView、delaysTouchesBegan和delaysTouchesEnded属性的影响。
发布于 2017-02-20 08:27:48
在Swift中,您可以避免标准行为,并让UITouch事件传播到视图及其子级,即使识别了手势,也可以使用
recognizer.cancelsTouchesInView = falsetouchesBegan和touchesEnded都将被调用。
https://stackoverflow.com/questions/3851637
复制相似问题