使用TouchesMoved跟踪两个手指

时间:2009-08-10 16:49:29

标签: iphone cocoa-touch iphone-sdk-3.0 multi-touch

假设我有两个手指触摸iPhone的屏幕,但只有一个正在移动。

TouchesMoved只显示一根手指(事件)。

我如何知道TouchesMoved指的两个手指中的哪一个?

5 个答案:

答案 0 :(得分:1)

不幸的是,如果你想一想,没有“明确”的方式将一个手指与一个触摸点相关联。毕竟,你的手指并不具备全球独一无二的身份识别功能,iPhone具有采样能力。

您需要做的是记录“先前”位置,这对于管理夹点和其他事情非常有用 - 并根据与先前触摸设置的接近程度标记每个手指。

答案 1 :(得分:1)

我发现可以做我想做的事。只需在iTunesU上查看斯坦福大学的CS193P课程。

答案 2 :(得分:1)

首先,在UIView上启用多点触控:

self.multipleTouchEnabled = true

然后保留UITouch个对象的字典。 UITouchtouchesBegantouchesMoved传递相同的touchesEnded个对象:

var touchTypes = Dictionary<UITouch, Int>()

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    for touchObject in touches {
        touchTypes.updateValue(i, forKey: touch as UITouch) //determine i for your own implementation
    }
}

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
    let type = touchTypes[touch] //depending on this value, do something
}

override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
    for touchObject in touches {
        touchTypes.removeValueForKey(touchObject as UITouch)
    }
}

答案 3 :(得分:0)

您可以使用TouchesBegan方法获得NSSet *的触摸,您需要遍历所有触摸并将其置于应用的上下文中,以便以后识别它们。 / p>

如果你描述了你的意图,那么帮助你会更容易......

答案 4 :(得分:0)

你写了

  

TouchesMoved只显示一根手指   (事件)。

但事实并非如此:只要两根手指触摸屏幕,并且至少其中一根手指移动,您就会得到touchesMoved 两个手指。

如果暂时拿起一根手指,您可能只用一根手指就可以接听touchesMoved次电话,因此您必须决定该怎么做。