【问题标题】:XCode - touchBegan - Recent Touches/New TouchesXCode - touchBegan - 最近的接触/新接触
【发布时间】:2010-09-29 23:26:49
【问题描述】:

我一直在使用 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。

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

【问题讨论】:

    标签: iphone xcode multi-touch touchesbegan


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      相关资源
      最近更新 更多