Различают касание пальцем и касание Apple Pencil
Я использую SceneKit для рендеринга 3D-модели на iPad Pro. Мое требование заключается в том, что я хотел бы выполнять различные взаимодействия при использовании Apple Pencil.
Есть ли способ различить касание пальцем и касание Apple Pencil?
Я пытался переопределить touchesBegan
функция и фильтрация UITouch
в Set
игнорировать те, которые с типом pencil
, но это, похоже, ничего не делает...
РЕДАКТИРОВАТЬ: меня больше интересует обработка этих двух различных типов касаний (то есть, когда происходит событие касания пальцем, я хочу выполнить какое-либо действие A. Если это карандаш, я хочу выполнить действие B). Какие методы я даже переопределить для достижения этой сегрегации?
3 ответа
В документации Apple говорится: «Сенсорный объект, созданный Apple Pencil, содержит дополнительную информацию, включая азимут и высоту Apple Pencil, а также величину силы, записанную на его кончике». Тем не менее, проверка(touch.altitudeAngle > 0)
у меня не сработало, потому что некоторые касания пальцев также имеют заданный угол. Я пытался(touch.majorRadiusTolerance == 0)
и это казалось надежным. Потом я понял, что мы можем просто проверить(touch.type == .pencil)
.
Простой способ проверки - объект UITouch будет иметь дополнительную информацию, которая поступает из стилуса (например, Apple Pencil). Проверьте, существует ли эта информация об объекте, и если это происходит, объект UITouch пришел из стилуса.
Для получения более подробной информации я связал ниже руководство ввода для Apple Pencil из документации для разработчиков.
Можете ли вы предоставить код, так как о типе в UITouch все равно следует сообщать правильно?
https://developer.apple.com/documentation/uikit/pencil_interactions/handling_input_from_apple_pencil
Ключ - это класс UIGestureRecognizer. "Базовый класс для конкретных распознавателей жестов", - говорится в документации Apple.
У него есть свойство allowedTouchTypes, которое можно использовать для различения различных типов касаний.
Это свойство представляет собой массив типов касания, который распознает, является ли прикосновение прямым или косвенным. Список всех возможных типов касания см. В перечислении UITouch.TouchType в UITouch. Значение этого свойства по умолчанию содержит все типы касания.
Распознаватель жестов различает типы касания, задав для свойства allowedTouchTypes значение UITouch.TouchType.pencil при отслеживании касаний Apple Pencil и значение UITouch.TouchType.direct при отслеживании касаний пальцем.
Кроме того, я нашел это в документации Apple. в этом руководстве представлен вспомогательный метод, который поможет отличить прикосновения пальцем к прикосновениям Apple Pencil. =>