我已经使用触摸开始追踪多达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下一次迭代,跳过你这样保存的文档/标记。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top