iOS:什么速度阈值使平移手势轻弹?

iOS: What velocity threshold makes a pan gesture a flick?

在 iOS 中处理 UIPanGestureRecognizer 时,可在此处找到的指南

https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/handling_uikit_gestures/handling_pan_gestures?language=objc

https://material.io/guidelines/patterns/gestures.html#gestures-drag-swipe-or-fling-details

建议使用速度 属性 来区分普通拖动与滑动或 flick/fling。它没有说什么是典型的阈值。举个例子,假设我们正在 iOS 屏幕上拖动缩略图(44x44 点)。撇开微调不谈,超过什么速度 y 值你会认为平移手势是 flick/fling?

上下文:我正在尝试在 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
    }
}