我一直在使用 touches 开始跟踪多达 8 次触摸,并且每次触发一个事件。这些触摸可以同时发生,也可以交错发生。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Touch Began");
NSSet *allTouches = [event allTouches];
for (int i=0; i<allTouches.count; i++) {
UITouch *touch = [[allTouches allObjects] objectAtIndex:i];
if (/*touch inside button in question*/) {
//Trigger the event.
}
}
}
该代码适用于多点触控,它没有问题,除了:(看看你能不能猜到)
由于 allTouches 的工作方式,它确实获得了所有的触摸。因此,当用户开始另一次触摸时,它会循环遍历当前处于活动状态的所有触摸,从而触发其中一个按钮的事件两次。
例如:Johnny 正在按下按钮 1。事件 1 发生。Johnny 将手指放在按钮 1 上,然后按下按钮 2。事件 2 发生,但按钮 1 仍然是 allTouches 的一部分,因此再次触发事件 1。
那么问题来了:我如何获得新的触感?