如果在子视图(包含可滚动的 UICollectionView)中滚动,则取消在 UIScrollView 中滚动 (SWIFT)

Cancel scrolling in UIScrollView if scrolling in subview (containing scrollable UICollectionView) (SWIFT)

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

UIScrollView

(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,并将 collection scroll 更改为 true 后,初始点击会导致 UIScrollView 滚动(从技术上讲,页面,因为 isPagingEnabled 对于 ScrollView 为 true),回到 pageOne 的顶部。

  1. 集合和 UIScrollView 委托等于 viewController class.
  2. DelayTouchDown 对于 UIScrollView 为真。
  3. collection 和 scrollView 都垂直滚动

有什么建议吗?

(第一次发帖,如果我的格式不正确,请见谅)

已解决

我特别关心的问题

UIScrollView.isPagingEnabled = true

将 isPagingEnabled 设置为 false 并将 collection.isScrollingEnabled always 设置为 true(相对于如上所述切换为 false),UI 按预期工作.