在 iOS 中处理 UIPanGestureRecognizer 时,可在此处找到指南
和
https://material.io/guidelines/patterns/gestures.html#gestures-drag-swipe-or-fling-details
建议使用速度属性来区分正常拖动和滑动或轻弹/猛击。没有任何地方说明典型的阈值是什么。举例来说,假设我们在 iOS 屏幕上拖动缩略图(44x44 点)。除了微调之外,高于什么速度 y 值,您会认为平移手势是轻弹/猛击?
上下文:我正在尝试实现您在 iPhone X 上的 iOS 11 中看到的 iOS 行为,其中向上滑动栏会将应用程序弹回到其主页图标,但我是在被弹回的单元格上执行此操作的到 UICollectionView。
最佳答案
经过一些研究,我发现 Apple 使用 300 的速度来检测 ScrollView 中的滑动。
extension TestViewController: UIScrollViewDelegate {
func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
print(scrollView.panGestureRecognizer.velocity(in: view)) // if velocity > 300, UIScrollView will scroll to next page
}
}
关于iOS:什么速度阈值使平移手势成为轻弹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48416315/