我一直在使用触摸开始追踪多达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的工作方式,它实际上获得了所有的触摸。因此,当用户开始另一次触摸时,它会循环播放当前处于活动状态的所有触摸,从而触发其中一个按钮的事件两次。
Ex:Johnny按下按钮1.事件1发生。 Johnny将手指放在按钮1上,然后按下按钮2.事件2发生,但按钮1仍然是allTouches的一部分,因此,事件1再次被触发。
所以这就是问题:我如何获得新的触摸?
答案 0 :(得分:0)
对于任何连续触摸,后续调用touchesBegan时将返回相同的触摸对象。因此,只需保存您已经处理过的(并且尚未结束)的每个UITouch * touch,并在下次在touchesBegan中进行迭代时,跳过您已保存/标记的那些。