假设我有两个手指触摸iPhone的屏幕,但只有一个正在移动。用TouchesMoved跟踪两个手指
TouchesMoved只会显示一个手指(事件)。
我怎么知道,两根手指的TouchesMoved所指呢?
假设我有两个手指触摸iPhone的屏幕,但只有一个正在移动。用TouchesMoved跟踪两个手指
TouchesMoved只会显示一个手指(事件)。
我怎么知道,两根手指的TouchesMoved所指呢?
我发现它可以做我想做的。只需在iTunesU上查看斯坦福大学的CS193P课程即可。
不幸的是如果你想想看有没有“权威”的方式来一个手指有一个触摸点相关联。毕竟,你的手指并没有全球唯一的ID,即iPhone有能力进行抽样。
你需要做的是保持“前”位置的记录,这是管理捏和其他东西反正有用的 - 和标记基于接近设定之前接触每一个手指。
您从TouchesBegan
方法中获得NSSet *
的触动位置,您需要遍历所有触摸并将它们放到应用程序的上下文中,以便稍后识别它们。
它会一直容易得多,如果你描述你的意图,以帮助您...
你写
TouchesMoved只会显示一个手指 (事件)。
,但这并非事实:只要两根手指触摸屏幕,并且它们中的至少一个动作,你会得到一个touchesMoved
与都手指。
如果一个手指被暂时回升,你可能会得到一些touchesMoved
电话只用一个手指,所以你必须决定做什么有关。
谢谢!我会看看。 – SpaceDog 2009-08-12 10:09:48
首先,在你的UIView
使多点触控:
self.multipleTouchEnabled = true
然后保持一个字典为UITouch
对象。同样UITouch
对象被传递touchesBegan
,touchesMoved
,并且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)
}
}
感谢,但我发现有一种方法来跟踪手指... http://www.alexcurylo.com/blog/2008/11/24/snippet-pinch-and-stretch/ – SpaceDog 2009-08-12 10:15:51