отслеживание двух пальцев с помощью TouchesMoved - PullRequest
5 голосов
/ 10 августа 2009

Предположим, у меня два пальца касаются экрана iPhone, но только один движется.

TouchesMoved покажет только один палец (событие).

Как узнать, какой из двух пальцев TouchesMoved имеет в виду?

Ответы [ 5 ]

1 голос
/ 19 октября 2014

Сначала включите мультитач на вашем 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)
    }
}
1 голос
/ 10 сентября 2009

Я обнаружил, что можно делать то, что я хочу. Просто проверьте курс Стэнфорда CS193P на iTunesU.

1 голос
/ 10 августа 2009

К сожалению, если подумать, нет «окончательного» способа связать один палец с одной точкой касания. В конце концов, это не значит, что у ваших пальцев есть глобальные уникальные идентификаторы, которые iPhone имеет возможность сэмплировать.

Что вам нужно сделать, так это вести учет «предыдущих» местоположений, которые в любом случае полезны для управления зажимами и другими вещами, и пометить каждый палец в зависимости от близости к набору предыдущих касаний.

0 голосов
/ 11 августа 2009

Вы написали

TouchesMoved покажет только один палец (Событие).

но на самом деле это не так: если два пальца касаются экрана и хотя бы один из них движется, вы получите touchesMoved с обоими пальцами.

если один палец временно поднят, вы можете получить несколько вызовов touchesMoved одним пальцем, поэтому вам нужно решить, что с этим делать.

0 голосов
/ 10 августа 2009

Вы получаете прикосновения как NSSet * из метода TouchesBegan, вам нужно будет пройти через все касания и поместить их в контекст вашего приложения, чтобы вы могли идентифицировать их позже .

Было бы намного проще помочь вам, если бы вы описали свои намерения ...

...