0

我一直在使用 touches 开始跟踪多达 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 的工作方式,它确实获得了所有的触摸。因此,当用户开始另一次触摸时,它会循环遍历当前处于活动状态的所有触摸,从而触发其中一个按钮的事件两次。

例如:Johnny 正在按下按钮 1。事件 1 发生。Johnny 将手指放在按钮 1 上,然后按下按钮 2。事件 2 发生,但按钮 1 仍然是 allTouches 的一部分,因此再次触发事件 1。

那么问题来了:我如何获得新的触感?

4

1 回答 1

0

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

于 2010-09-29T23:33:54.803 回答