的XCode - 的touchesBegan - 最近倒是/新润色
-
26-09-2019 - |
题
我已经使用触摸开始追踪多达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作品,它确实得到所有的触摸。正因为如此,它当用户开始另一触摸,并且因此触发按钮中的一个的情况下,两次循环通过所有当前活动的触摸。
例:约翰尼按压按钮1.事件发生1。约翰尼离开他的上按钮1手指,并且压按钮2.事件2发生,但按钮1还是allTouches的一部分,因此,被再次触发事件1。
所以这里的问题:我如何获得新的触摸
解决方案
在相同的触摸对象将在后续调用的touchesBegan任何连续触摸返回。因此,只要保存每个UITouch *触摸你已经处理的开始(和尚未结束),并为你的touchesBegan下一次迭代,跳过你这样保存的文档/标记。
不隶属于 StackOverflow