XCode - touchBegan - 最近触摸/新触摸
问题描述:
我一直在使用触摸开始追踪多达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再次触发。
所以,这里的问题是:我如何获得新的触摸?
答
在随后调用touchesBegan以进行任何连续触摸时,将返回相同的触摸对象。因此,只需保存已经处理的每个UITouch *触摸(已经开始处理(尚未结束)),并且在下一次迭代触摸时重复,跳过已保存/标记的那些触摸。
Perfet!非常感谢! – 2010-09-29 23:53:10