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

时间:2017-08-10 18:47:00

标签: ios swift uicollectionview uicollectionviewcell touchesmoved

enter image description here

所以继续我的问题,你在gif上看到的4个橙色矩形是一个垂直的UICollectionView = orangeCollectionView。

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

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

当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。

1 个答案:

答案 0 :(得分:0)

也有这个问题......没有找到一个很好的方法来做到这一点,但这是有效的。 首先,您需要访问滚动视图委托方法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.

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