如何滚动另一个 UICollectionView 下方的 UICollectionView?

Posted

技术标签:

【中文标题】如何滚动另一个 UICollectionView 下方的 UICollectionView?【英文标题】:How to scroll UICollectionView that is underneath another UICollectionView? 【发布时间】:2017-08-10 18:46:59 【问题描述】:

这是我的问题,您在 gif 上看到的 4 个橙色矩形是一个垂直的 UICollectionView = orangeCollectionView。

绿色和紫色“卡片”视图是另一个 UICollectionView = overlayCollectionView 的一部分。

overlayCollectionView 有 3 个单元格,其中一个是空白的 UICollectionViewCell,另外 2 个是卡片。

当 overlayCollectionView 显示空白 UICollectionViewCell 时,我希望能够滚动 orangeCollectionView。

override func point(inside point: CGPoint, with event: UIEvent?) -> Bool 
    guard let superr = superview else  return true
    for view in superr.subviews 
        if view.isKind(of: OrangeCollectionView.self) 
            view.point(inside: point, with: event)
            return false
        
    
    return true

这允许我滚动 orangeCollectionView 但是这实际上并不能解决我的问题。我需要能够左右滚动才能显示卡片,但是这会阻止所有触摸,因为该点总是落在 OrangeCollectionView 上。

如何检查他们是否在向左/向右滚动以显示卡片?否则,如果它们在空白单元格上,请上下滚动 orangeViewController。

【问题讨论】:

好吧,如果overlayCollectionView的计数为0(正如你提到的空白)隐藏该视图并获得对橙色的引用。当没有获得对覆盖的引用时。 @TusharSharma overlayCollectionView 的计数将始终为 3。单元格顺序为 CardCell、Blank Cell、CardCell。 overlayCollectionView 最初专注于空白单元格,用户可以向左/向右滚动以查看其他单元格。 即使它是空白的,但它仍然存在。您想与 parent view 与 child visible 交谈。我不认为这样是可能的,如果可能的话,甚至是一件好事。 @RyanTemple - 这篇文章应该为您提供解决方案。它是 Obj-C,但代码很少,所以应该不难实现...***.com/questions/13736399/… 【参考方案1】:

也有这个问题......没有找到一个很好的方法来解决这个问题,但这很有效。 首先,您需要访问滚动视图委托方法 scrollViewDidScroll()。你打电话给:

if scrollView == overlayScrollView 

   if scrollView.contentOffset.x == self.view.frame.width  // don't know which coordinate you need

       self.overlayScrollView.alpa = 0
   


之后,在橙色集合视图上添加一个空白视图。视图的 alpha 为 0(我认为,也许颜色很清晰;如果可行,请尝试一下)。

在代码中,然后将 UISwipeGestureRecognizer 添加到刚刚创建的视图中,并检测是否有向左或向右滑动。

通过检测滑动的方向,您可以简单地将overlayScrollView 的 contentOffset.x 轴更改为 0 或 self.view.frame.width * 2。

抱歉,我无法提供我的工作示例代码,我正在通过手机回答。这不是正确的解决方案,但是当我为一个大客户制作一个食品应用程序时,它运行良好,没有人抱怨:)

【讨论】:

以上是关于如何滚动另一个 UICollectionView 下方的 UICollectionView?的主要内容,如果未能解决你的问题,请参考以下文章

当有人滚动到 UICollectionView 的顶部时,如何调用方法?

为啥第一次滚动到另一个 UITableView 中的 UICollectionView 中的 UITableView 不加载数据?

UITableViewCell 中的 UICollectionView 如何设置选择以将数据从当前视图传递到另一个视图

如何将滚动动画从一个uiscrollview“传输”到另一个

UICollectionView 保持水平列表滚动位置

滚动到 UICollectionView 中启用分页的页面