Я пришел из macOS/Cocoa & Mouse Events, и я пытаюсь разобраться в этих событиях «Finger» (мое собственное название)
Мой вопрос:
Когда событие "Finger" происходит на UIView
(назовем MyView
), когда оно отправляется как Gesture
на UIGestureRecognizer
на MyView
, и когда оно отправляется как touchesBegan/touchesMoved/touchesEnded
на MyView
Я искал со всеми возможными запросами, которые только мог придумать, и действительно нашел только несколько достойных источников, но ничего, что отвечало бы именно тому, что я ищу.
touchesBegan, touchesEnded, touchesMoved для перемещения UIView
UIGestureRecognizers vs touchesBegan/touchesMoved/touchesEnded (точность)
Сейчас мне кажется, что разница между touchBegan/touchMoved/touchEnded и распознавателем жестов зависит от скорости движения пальца?
Поэтому, если вы нажмете и медленно переместитесь, базовый UIView
получит события touchMoved
. Если вы быстро нажмете и перетащите, жест будет создан и передан в GestureRecognizer базового UIView
.
Мое текущее предположение состоит в том, что когда палец касается земли, цикл обработки событий обнаруживает этот палец и запускает touchesBegan
. Когда вы перемещаете палец, он запускает touchesMoved
.
Однако, если вы двигаетесь достаточно быстро или таким образом, что среда выполнения считает, что вы делаете жест, вместо этого создается жест и отправляется сообщение на UIGestureRecognizer
вместо отправки touchesMoved
В настоящее время я пытаюсь проверить эту гипотезу, но это довольно утомительно, и у меня нет действительно хорошего примера проекта для проверки, поэтому я решил, что если возможно, поищу краудсорсинг. отпишусь, если сам разберусь