对于实验我有一个UIViewController和一个截取触摸事件的自定义窗口,这样我可以在屏幕上拖动和滑动不同的UIViews。我处理的事件类型有3种:UITouchPhaseBegan和UITouchPhaseMoving(其中我简单地根据触摸坐标移动子UIView)和UITouchPhaseEnded(其中我向UIView施加一个力让它在屏幕上移动,放慢速度摩擦)。UIScrollView如何在滚动/抖动的情况下滚动得如此之好?
我计算结束触摸事件时应用的力的方法是通过计算最后(来自UITouchPhaseMoving)和当前(来自UITouchPhaseEnded)触摸位置之间的方向矢量,但它似乎并没有给我我想要的结果。
当我移动视图并平稳地将手指从屏幕上抬起时,它会很好地移动,但是当我“移动”到最后时,它移动的距离并不像预期的那么远。这是因为即使我将它在屏幕上移动了几帧,最后的跳动使得最后和当前触摸事件的坐标太接近,所以我没有计算出全力。
对不起长文本,但我注意到像UIScrollView这样的视图仍然可以正确滚动,即使是这种干的/闪烁的运动;这是因为最终的力量是在多个帧上计算的,而不是仅仅是最后一帧和当前帧?如果是这样,是否有人知道滚动视图的内部工作原理,即使是轻快/抖动的运动,它也能够很好地工作?