2010-10-03 83 views
1

我正在尝试制作一个由触摸控制的iPhone应用程序。我还希望在用户双击时启动加电。这是我到目前为止有:UITapGestureRecognizer停止触摸已结束

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:仅触发一次时,定时器仍在运行。我怎样才能解决这个问题?

+0

为什么你使用触摸开始/结束,当你有一个手势识别器的方法usePower的设置? – 2010-10-03 21:25:50

+0

我认为杰克希望能够做到不止双击。例如,使用触摸在屏幕上拖动视图。 – 2010-10-03 21:38:10

回答

2

这里是我的检测双水龙头的解决方案:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 

UITouch *touch = [touches anyObject]; 

if([touch tapCount] == 2) { 
// do sth 
} 

} 
2

将手势识别器添加到视图会更改几种触摸处理方法的行为,包括touchesEnded:WithEvent:

从上面的链接:

观察后, 触摸对象的附视图,或 其配置的输送,否则是 受cancelsTouchesInView, delaysTouchesBegan和 delaysTouchesEnded性质。

1

在斯威夫特,可以避开标准的行为,让UITouch事件传播到浏览和其子,即使一个手势被识别与

recognizer.cancelsTouchesInView = false 

两个touchesBegantouchesEnded将被调用。