将UICollectionViewCell的向前轻击手势转发到其父视图

4
我有一个UITableView,其中每个UITableViewCell包含一个UICollectionView。UICollectionView中有UICollectionViewCells。
我的问题是:其中一些UICollectionViewCells应该对触摸手势做出反应,而其他UICollectionViewCells应该将事件转发给UITableViewCell(以便触发显示该UITableViewCell的详细视图)。
我一直在研究苹果文档和这里的几个问题,但我无法使其正常工作。
(我认为通常情况下应该能够解决此问题,但以防万一:每个UICollectionViewCell都包含一个UIImageView。)
非常感谢您的建议。
2个回答

1
如果我理解正确,您可以这样做:
  1. 在你不想处理事件的单元格上设置cell.userInteractionEnabled = NO
  2. 重写你的UICollectionView中的hitTest方法:

    -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
    {
        UIView *hitTest = [super hitTest:point withEvent:event];
        return hitTest == self ? nil : hitTest;
    }
    
所以,如果启用了用户交互的单元格外部任何位置被点击,super会返回集合视图,我们返回nil,导致表格视图单元格处理事件。

这不会破坏collectionView中的滚动吗? - Felix Lamouroux
当然可以。如果你需要滚动,你可以像@FelixLam建议的那样使用回调函数。 - Timothy Moose
该属性为 userInteractionEnabled = NO - bcattle
@bcattle 是的。谢谢。 - Timothy Moose

0
为什么不让只有UICollectionView的单元格处理点击事件,然后在回调中确定要执行的操作。对于某些单元格,您可以像现在一样轻敲单元格,对于其他单元格,则可以执行任何您想要的操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接