Одновременные прикосновения к разным 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 по рисованию.

Есть ли способ изменить это поведение? В идеале я бы хотел, чтобы мой цикл касаний, запускаемых карандашом, НЕ прерывался вторым касанием.

Если последнее невозможно, могу ли я правильно учесть ВСЕ активные касания, чтобы я мог отменить текущий ход или сделать что-нибудь еще?

0 ответов

Другие вопросы по тегам