【问题标题】:Cancel scrolling in UIScrollView if scrolling in subview (containing scrollable UICollectionView) (SWIFT)如果在子视图中滚动(包含可滚动的 UICollectionView)(SWIFT),则取消 UIScrollView 中的滚动
【发布时间】:2020-08-11 17:50:11
【问题描述】:

我有当前的结构:(-> 表示子视图)

UIScrollView

  • pageOne:UIView
  • pageTwo:UIView -> 集合:UICollectionView

(pageOne 和 pageTwo 是 UIScrollView 的子视图。pageTwo 包含一个 CollectionView)

如果在集合中检测到滚动(拖动),我正在尝试取消父 UIScrollView 的滚动。我通过为 pageTwo 构建一个 UIPanGestureRecognizer 来做到这一点。当检测到拖动时,我设置:

UIScrollView.isScrollingEnabled = false collection.isScrollingEnabled = true

当 UIPanGestureRecognizer.State.ended(拖入 pageTwo 停止)时,我退后了

UIScrollView.isScrollingEnabled = true collection.isScrollingEnabled = false

我已经验证该函数正确识别拖动/结束拖动,但由于某种原因,虽然在 pageTwo 内拖动被正确检测到,但 UIScrollView 继续滚动。更具体地说,在拖入 pageTwo 并成功将 UIScrollView 滚动更改为 false 并将集合滚动更改为 true 后,初始点击会导致 UIScrollView 滚动(从技术上讲,页面,因为 isPagingEnabled 对于 ScrollView 为 true),返回到 pageOne 的顶部。

  1. collection & UIScrollView 委托等于 viewController 类。
  2. DelayTouchDown 适用于 UIScrollView。
  3. collection 和 scrollView 都垂直滚动

有什么建议吗?

(对不起,如果我对这个问题的格式不正确,第一次发布)

【问题讨论】:

    标签: ios swift uicollectionview uiscrollview uipangesturerecognizer


    【解决方案1】:

    已解决

    我特别关心的问题

    UIScrollView.isPagingEnabled = true
    

    将 isPagingEnabled 设置为 false 并将 collection.isScrollingEnabled always 设置为 true(而不是如上所述切换为 false)后,UI 将按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      相关资源
      最近更新 更多