【发布时间】:2023-04-01 03:00:01
【问题描述】:
我的 ViewController 底部有一个视图(类似于 Google Maps Bottom Sheet)。目标是:
向上平移时,视图向平移方向移动(基本上跟随手指),当平移结束时,视图变为全屏。到目前为止一切顺利。
添加滑动手势。向上滑动时,视图应全屏显示。
问题在于,根据定义,滑动手势是平移手势,反之则不然。因此,除非我的平移速度真的很慢,否则即使我仍在屏幕上拖动,滑动手势也会触发并且视图将全屏显示。
只是平移看起来不像我正在寻找的那种滑动。我描述的滑动手势应该仅在用户“轻弹”视图时触发。如果他们继续平移,则应优先使用平移手势。
任何想法如何实现这一目标?作为参考,您可以在 android 或 ios 上查看谷歌地图上的图钉。
如果不显示的话有点难以描述,所以如果它有助于我非常开放地澄清事情。
更新
- 我认为,正如我所描述的那样,滑动会覆盖平移的区别在于它 a) 需要很短的时间才能完成 b) 手势以用户将手指从屏幕上抬起 c) 结束 c) (可能是错误的) 遍历的区域不应该太大。对我来说听起来很像电影..
【问题讨论】:
-
你试过shouldRecognizeSimultaneously
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { return true } -
你也可以使用 shouldRequireFailureOf 方法。
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool { return true }
标签: ios uigesturerecognizer uipangesturerecognizer uiswipegesturerecognizer