使UICollectionViewCell的一部分不可点击

问题描述:

基本上我想要做的是在UICollectionView中有一个单元,它的哪一部分将响应点击,而其中的一部分则不会。 这个单元格将是一个正常的单元格,它在点击时展开,显示不会响应点按的展开区域的子视图。使UICollectionViewCell的一部分不可点击

我考虑扩大细胞,并添加一个子视图它上面,这将不可点击。但我认为这是完成它的一种“坏”方式。

有没有这样做的最好方法?

这就是我想要做的:

enter image description here

任何帮助表示感谢,谢谢!

随着选择

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath; 

你必须返回一个单元格,并在此功能,您应该确定电池是否是可以点击的,然后简单地做

cell.userInteractionEnabled = shouldAllowTouch; 
+0

但是,这将使所有单元格不可点击,并且我想让顶部保持可点击状态,如图所示。 – xicocaio

+0

您可以制作不可点击的单元格视图 –

+0

或者让您不希望在其自己的单元格中选择的内容,并且使该单元格的用户交互功能未启用 –

你需要继承UICollectionViewCell ,那么覆盖hitTest:withEvent而不是pointInside:withEvent,在hitTest:withEvent:之内,您应该定义targetRect,然后检查点用户点击是否在targetRect之内。

这是在我的tableViewCellcollectionViewCell类似)上工作的代码。

- (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]; 
    } 
} 
+0

感谢您的回复,您的解决方案确实看起来很有趣并且合理。但是,我前一段时间发布了这个问题,并且我通过使用UICollectionViewCell和UIView解决了这个问题。所以,我将这个单元展开为所需的尺寸,并在新的展开区域上放置一个视图。由于我目前没有在这个项目上工作,我现在无法验证你的答案。但是,只要我能尝试你的解决方案,我会给你一个反馈。无论如何感谢您的帮助! =) – xicocaio

+0

很高兴听到您修复它。将遮盖物放在扩大的区域是一个很好的选择。 – superZhen