iOS:啥速度阈值使平移手势成为轻弹?

Posted

技术标签:

【中文标题】iOS:啥速度阈值使平移手势成为轻弹?【英文标题】:iOS: What velocity threshold makes a pan gesture a flick?iOS:什么速度阈值使平移手势成为轻弹? 【发布时间】:2018-01-24 06:43:35 【问题描述】:

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

建议使用速度属性来区分正常拖动与滑动或轻弹/轻弹。它没有说明典型的阈值是什么。例如,假设我们在 iOS 屏幕上拖动缩略图(44x44 点)。抛开微调不谈,您认为平移手势超过什么速度 y 值是轻弹/轻弹?

上下文:我正在尝试在 iPhone X 上实现您在 iOS 11 中看到的 iOS 行为,在该栏上向上滑动会将应用程序返回其主页图标,但我是在被抛回的单元格上执行此操作到 UICollectionView。

【问题讨论】:

【参考方案1】:

在做了一些研究后,我发现 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
    

【讨论】:

每秒点数,请阅读文档developer.apple.com/documentation/uikit/uipangesturerecognizer/…

以上是关于iOS:啥速度阈值使平移手势成为轻弹?的主要内容,如果未能解决你的问题,请参考以下文章

如何确定平移手势的真实结束速度?

是否可以禁用滑动手势并仅使平移手势在滚动视图中工作?

如何根据平移手势速度向 Sprite Kit 节点应用角脉冲

轻弹手势期间的内容偏移

捕获组合的按钮按下和平移手势

在颤振中如何使带有平移手势的内部小部件不会与PageView冲突