отслеживание двух пальцев с помощью touchesMoved
-
12-09-2019 - |
Вопрос
Предположим, я касаюсь экрана iPhone двумя пальцами, но движется только один.
touchesMoved покажет только один палец (событие).
Как мне узнать, какой из двух пальцев touchesMoved тоже имеет в виду?
Решение 2
Я обнаружил, что можно делать то, что я хочу.Просто проверьте курс Стэнфорда CS193P на iTunesU.
Другие советы
К сожалению, если задуматься, не существует «определенного» способа связать один палец с одной точкой касания.В конце концов, дело не в том, что ваши пальцы имеют глобально уникальные идентификаторы, которые iPhone может скопировать.
Что вам нужно сделать, так это вести учет «предыдущих» мест, что в любом случае полезно для управления зажимами и другими вещами, и помечать каждый палец в зависимости от близости к предыдущим установленным касаниям.
Сначала включите мультитач на вашем 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)
}
}
Вы получаете прикосновения как NSSet *
из TouchesBegan
вам нужно будет просмотреть все касания и поместить их в контекст вашего приложения, чтобы вы могли идентифицировать их позже.
Было бы гораздо проще Вам помочь, если бы Вы описали свое намерение...
Вы написали
touchesMoved покажет только один палец (событие).
но на самом деле это не так:пока два пальца касаются экрана и хотя бы один из них движется, вы будете получать touchesMoved
с и то , и другое пальцы.
если временно поднять один палец, вы можете получить несколько touchesMoved
звонит всего одним пальцем, так что вам нужно решить, что с этим делать.