2010-09-29 100 views
0

我一直在使用触摸开始追踪多达8个触摸,并且每个触发一个事件。这些触摸可以同时发生,或交错。XCode - touchBegan - 最近触摸/新触摸

- (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仍然是所有触摸的一部分,因此事件1再次触发。

所以,这里的问题是:我如何获得新的触摸?

回答

0

在随后调用touchesBegan以进行任何连续触摸时,将返回相同的触摸对象。因此,只需保存已经处理的每个UITouch *触摸(已经开始处理(尚未结束)),并且在下一次迭代触摸时重复,跳过已保存/标记的那些触摸。

+0

Perfet!非常感谢! – 2010-09-29 23:53:10