我试图在用户抬起手指后获取滚动 UIScrollView 的速度,以便在滚动视图的速度降至阈值速度以下时触发事件。
Apple 文档指出滚动视图速度的单位是点,我猜这将是每秒(pts/s),例如 UIScrollView Delegate 方法- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
。
因此,我假设滚动视图减速度的单位是每秒点数(pts/s^2),但情况似乎并非如此。
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
以下是从方法和方法中提取的平移手势事件结束后(即,只要您抬起手指)就从滚动滚动视图中提取的一些示例参数- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
:
(初始偏移、目标偏移、初始速度、最终速度、减速度、经过时间)=
- (364.0, 2664.5, 4.619940, 0, 0.998, 3.068916)
- (2595.5, 3288.5, 1.398724, 0, 0.998, 2.485449)
- (3094.5, 1907.0, -2.389578, 0, 0.998, 2.752163)
- (143.0, 1275.5, 2.279252, 0, 0.998, 2.718653)
在哪里:
- 手指一抬起,初始偏移量 = scrollView.contentOffset.y
- 目标偏移 = targetContentOffset->y 手指一抬起或 scrollView.contentOffset.y 滚动视图完成减速
- 手指一抬起,初始速度 = velocity.y
- 最终速度 = 0 因为让滚动视图滚动直到它自然停止
- 手指一抬起,Deceleration = scrollView.decelerationRate
- 已用时间 = 从手指抬起到滚动视图停止之间的时间