【问题标题】:iOS: can I programmatically decide what component to interact with (scrolling)?iOS:我可以以编程方式决定与哪个组件交互(滚动)吗?
【发布时间】:2019-10-07 10:19:28
【问题描述】:

我的情况是我有两个可滚动的视图,一个是水平的,另一个是垂直的。有没有办法检测用户是否做了垂直或水平手势,并据此选择要与之交互的视图?

感谢您的帮助。

【问题讨论】:

  • 你想根据方向对卷轴做点什么吗?

标签: ios scroll gesture uitapgesturerecognizer


【解决方案1】:

您可以使用UIScrollViewDelegate 中的scrollViewWillBeginDragging 来获取滚动的方向。

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    let translation = scrollView.panGestureRecognizer.translation(in: scrollView.superview)
    if translation.y > 0 {
        // swipes from top to bottom of screen -> down
    } else {
        // swipes from bottom to top of screen -> up
    }
}

但由于此方法不返回滚动视图,因此您只会知道拖动了哪个滚动以及向哪个方向拖动。

【讨论】:

    【解决方案2】:

    请查看 isDirectionalLockEnabled 是否有帮助。 这有助于锁定滚动方向。

    如果此属性为 YES 并且用户开始沿一个大致方向(水平或垂直)拖动,则滚动视图将禁用在另一个方向上的滚动。如果拖动方向是对角线,则滚动不会被锁定,用户可以向任意方向拖动,直到拖动完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 2021-08-31
      • 2012-08-04
      • 2018-06-10
      • 1970-01-01
      • 2012-06-23
      相关资源
      最近更新 更多