XCode - touchesBegan - 最近的接触/新的接触

时间:2010-09-29 23:26:50

标签: iphone xcode multi-touch touchesbegan

我一直在使用触摸开始追踪多达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再次被触发。

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

1 个答案:

答案 0 :(得分:0)

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