使UICollectionViewCell的一部分不可点击
问题描述:
基本上我想要做的是在UICollectionView中有一个单元,它的哪一部分将响应点击,而其中的一部分则不会。 这个单元格将是一个正常的单元格,它在点击时展开,显示不会响应点按的展开区域的子视图。使UICollectionViewCell的一部分不可点击
我考虑扩大细胞,并添加一个子视图它上面,这将不可点击。但我认为这是完成它的一种“坏”方式。
有没有这样做的最好方法?
这就是我想要做的:
任何帮助表示感谢,谢谢!
答
随着选择
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
你必须返回一个单元格,并在此功能,您应该确定电池是否是可以点击的,然后简单地做
cell.userInteractionEnabled = shouldAllowTouch;
答
你需要继承UICollectionViewCell
,那么覆盖hitTest:withEvent
而不是pointInside:withEvent
,在hitTest:withEvent:
之内,您应该定义targetRect
,然后检查点用户点击是否在targetRect
之内。
这是在我的tableViewCell
(collectionViewCell
类似)上工作的代码。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
CGRect targetRect = CGRectMake(0, 0, CGRectGetWidth(self.bounds), 20);
if (CGRectContainsPoint(targetRect, point)) {
return nil;
} else {
return [super hitTest:point withEvent:event];
}
}
但是,这将使所有单元格不可点击,并且我想让顶部保持可点击状态,如图所示。 – xicocaio
您可以制作不可点击的单元格视图 –
或者让您不希望在其自己的单元格中选择的内容,并且使该单元格的用户交互功能未启用 –