所以继续我的问题,你在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。
答案 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.
抱歉,我无法提供我的工作示例代码,我正在通过手机回复。这不是一个合适的解决方案,但当我为一个大客户制作一个食品应用程序时,它工作得很好,没有人抱怨过:)