我试图在用户抬起他/她的手指后获得滚动UIScrollView的速度,以便当滚动视图的速度降至阈值速度以下时我可以触发事件。
Apple文档指出,滚动视图的速度单位是点,我猜这将是每秒(pts / s),例如,对于UIScrollView Delegate方法{ {1}}。
因此我假设滚动视图减速的单位为每秒每秒点数(pts / s ^ 2)但情况似乎并非如此。
以下是从方法- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
和- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
拉出的平移手势事件结束后(即,只要抬起手指)从滚动滚动视图中拉出的一些示例参数:
(初始偏移,目标偏移,初始速度,最终速度,减速度,经过时间)=
其中:
答案 0 :(得分:4)
用于您目的的最重要的委托方法可能是scrollViewDidScroll:
,因为您只是不断地一遍又一遍地发送该消息,包括在减速期间。监测正在发生的事情比预先计算更有用。没有有用的“单位用于滚动视图的减速” - 也就是说,您没有任何信息可以让您在减速期间的每个时刻提前计算速度。但是,scrollViewWillEndDragging:withVelocity:targetContentOffset:
告诉您现在的速度以及当速度为零时滚动视图将具有的偏移量,并且您现在可以请求偏移量,因此您可以决定当前偏移量与最终偏移量之间的偏移量偏移,并在scrollViewDidScroll:
中监视滚动的剩余部分,以了解何时传递该偏移量。当然,每次调用scrollViewDidScroll:
时你都可以获取一个时间戳,因此,使用它和瞬时偏移量,以及之前所有呼叫的记录,都是你的瞬时速度。
答案 1 :(得分:0)
UIScrollView
的速度单位以pt/ms
度量,而UIPanGestureRecognizer
的速度单位以pt/s
度量