Как я могу преобразовать координаты NSTouch в координаты экрана?
В какао на macOS NSTouch
Объект содержит координаты касания в нормализованной системе координат (с x, y в диапазоне от 0,0 до 1,0). И у этого также есть размер устройства тачпада.
Так что для NSTouch
Объект вы должны координаты касания на устройстве сенсорной панели. Это, конечно, имеет большой смысл.
То, что я сейчас пытаюсь сделать, это сопоставить эти координаты с координатами экрана. (Я знаю, что это не очень четко определено, поэтому, пожалуйста, прочтите дальнейшее объяснение того, что я имею в виду.)
Для одного касания это преобразование уже обрабатывается Cocoa/macOS: я получаю NSEvent
объект (type=Gesture
) и это NSEvent
имеет расположение указателя мыши (и NSTouch
из NSEvent
имеет координаты тачпада-устройства).
Но это не работает для мультитач жеста, так как NSEvent
имеет только одно местоположение, а для жестов мультитач положение указателя мыши остается на том месте, где начался жест мультитача.
Это имеет все очень много смысла. Но теперь я хочу как-то сделать то же преобразование, что и для случая с одним касанием (для каждого касания в жесте с несколькими касаниями). Я считаю, что настройки скорости трекпада в системных настройках будут влиять на такое отображение.
Если вас интересует сценарий использования, подумайте о приложении для рисования, которое позволяло бы создавать многострочные (multi-touch) рисунки, и эти многострочные рисунки должны выполняться с той же скоростью, что и указатель мыши.
я нашел это NSTouch
имеет locationInView
функция, но это утверждает для меня все время. Этого следует ожидать в соответствии с /questions/7438389/ne-udaetsya-poluchit-locationinview-dlya-etogo-tipa-oshibki-podtverzhdeniya-nstouch-pri-popyitke-poluchit-mestopolozhenie/7438401#7438401 (эта функция работает только для сенсорных событий, поступающих с сенсорной панели, но не с трекпада).
Я не мог найти другие методы, которые выглядят многообещающими.