Одновременные прикосновения к разным UITouch.TouchTypes отображают необычное поведение события
Я работаю над приложением для рисования и во время тестирования Apple Pencil заметил, что touchesEnded
вызывается преждевременно, когда текущее событие касания, запускаемое карандашом, прерывается вторым касанием. Этого не происходит, когда, скажем, я рисую пальцем и вводю второе одновременное касание. Я также заметил, что touchCount не увеличивается при одновременном касании карандаша и пальца. Точно так же (возможно, по задумке) жесты не работают со смешанными типами касания. Ниже я покажу, как я учитываю активные прикосновения во времяtouchesMoved
override func viewDidLoad() {
...
self.view.isMultipleTouchEnabled = true
...
}
func touchesMoved(touches: Set<UITouch>, event: UIEvent?) {
if let touch = touches.first {
let event = event
let touchCount = touches.count
print ("[ComponentPagePaint]: TOUCH COUNT = \(touchCount)")
let numFingersOnScreen: Int = ((event?.allTouches!.count)!)
print ("[ComponentPagePaint]: FINGr COUNT = \(numFingersOnScreen)")
}
}
Похоже, что смешивание типов касаний приводит к тому, что UIView завершает первое касание и переключается на второе. Этого не происходит, когда у меня есть несколько одновременных касаний TouchType.direct. Обратите внимание, что это поведение также присутствует в демонстрационном проекте Apple по рисованию.
Есть ли способ изменить это поведение? В идеале я бы хотел, чтобы мой цикл касаний, запускаемых карандашом, НЕ прерывался вторым касанием.
Если последнее невозможно, могу ли я правильно учесть ВСЕ активные касания, чтобы я мог отменить текущий ход или сделать что-нибудь еще?