Для экспериментов у меня есть UIViewController и пользовательское окно, которое перехватывает сенсорные события, так что я могу перетаскивать и пролистывать различные UIViews по экрану.Есть три типа событий, которые я обрабатываю: UITouchPhaseBegan и UITouchPhaseMoving (где я просто перемещаю sub-UIView в соответствии с координатой касания) и UITouchPhaseEnded (где я применяю силу к UIView, чтобы заставить его перемещаться по экрану, замедляясь стрение).
Способ вычисления силы, применяемой при завершении события касания, заключается в вычислении вектора направления между последним (из UITouchPhaseMoving) и текущим (из UITouchPhaseEnded) местоположениями касания, однако это не так.кажется, дает мне результаты, которые я хочу.
Когда я перемещаю вид и плавно отрываю палец от экрана, он плавно перемещается, однако, когда я "дергаю" движение к концу, оно не перемещается какнасколько ожидалось.Это потому, что хотя я перемещаю его по экрану на несколько кадров, резкое движение в конце делает координаты последнего и текущего события касания слишком близкими, поэтому я не получаю рассчитанную полную силу.
Извините за длинный текст, но я заметил, что представления, такие как UIScrollView, по-прежнему прокручиваются должным образом даже с этим резким движением;Это потому, что окончательная сила рассчитывается по количеству кадров, а не только по последним и текущим кадрам?Если так, кто-нибудь знает внутреннюю работу скролл-просмотра, которая позволяет ему так хорошо работать даже при резком или резком движении?