首先看一下附图:
我的层次结构如下所示:
- UIView - UIButton - UICollectionView - UICollectionViewCell - UICollectionViewCell - UICollectionViewCell - UICollectionViewCell
UICollectionView 被添加到 UIView 中,使用的约束为
我的两个需求是:
1. 只有 UICollectionViewCell 的蓝色部分应触发
![enter image description here](https://istack.dev59.com/Vi45p.webp)
- UIView - UIButton - UICollectionView - UICollectionViewCell - UICollectionViewCell - UICollectionViewCell - UICollectionViewCell
UICollectionView 被添加到 UIView 中,使用的约束为
H:[collectionView(==270)]|
和 V:|-(70)-[collectionView]-(70)-|
。我的两个需求是:
1. 只有 UICollectionViewCell 的蓝色部分应触发
collectionView::didSelectItemAtIndexPath:
方法。我已经成功实现了这一点。
2. 当 UICollectionViewCell 处于选定状态时,其它所有单元格的蓝色部分都应该显示。- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *hitView = [super hitTest:point withEvent:event];
if (hitView == self.customView) {
return self;
}
return nil;
}
关于自定义类UIColectionViewCell的问题。 customView
属性指的是 cell 的蓝色/红色 UIView。
这能够正常工作。
2) 我想将在 UICollectionViewCell 的绿色部分或 UICollectionVIew 本身(背景为白色,不透明度为0.5)执行的任何手势(Tap/LongTap/Pan/...)传递到父视图。例如下面的青色 UIButtion。 绿色部分也不应该滚动 CollectionView... 它必须对任何手势都完全透明。
我该如何做?尝试了很多不同的方法,但没有一个有效。我知道如何在普通UIView上实现它,但无法在UICollectionView及其单元格上实现它。
请记住,将有其他UIView或UIButtions被放置在集合视图的绿色部分下,并且可以进行交互。 绿色部分后来会变成UIClearColor。
建议只让 UICollectionView 的宽度更小(蓝色部分的宽度)不是一个选项,因为在某些情况下,UICell的蓝色/红色部分必须延伸到整个单元格的完整宽度。