#ios #uipangesturerecognizer
#iOS #uipangesturerecognizer
Вопрос:
Я обрабатываю события с помощью UIPanGestureRecognizer, когда состояние отправителя начинается. В этом состоянии я измеряю скорость перевода. Я всегда получаю ненулевую скорость. Знак трансляции обычно совпадает с velocty (а translation — небольшое ненулевое число), но иногда translaton равно 0. Почему?
У меня это есть на iPhone 7 с iOS 11.
Ответ №1:
Это связано с тем, что распознаватель жестов панорамирования начинает распознавать жест, когда обнаруживает движение. Первое касание на экране — это еще не панорамирование, это просто касание. Палец должен двигаться хотя бы чуть-чуть, чтобы его можно было считать панорамированием. И если он немного переместился в одном направлении, скорость также будет в этом направлении
В документах говорится:
Жест панорамирования является непрерывным. Он начинается (UIGestureRecognizer.State.beginning), когда минимальное допустимое количество пальцев (минимальное количество касаний) переместилось достаточно, чтобы считаться панорамированием.
(курсив мой.)
Перевод может быть равен 0, если вы перемещаете палец в одном направлении, а затем возвращаетесь на исходное место, и общего перемещения было достаточно, чтобы UIPanGestureRecognizer считался панорамированием.