假設我有兩個手指觸摸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