将点击手势转发到UICollectionViewCell的超级视图

时间:2013-06-27 16:05:31

标签: ios objective-c uicollectionview

我有一个UITableView,其中每个UITableViewCell都包含一个UICollectionView。 UICollectionView具有UICollectionViewCells。

我的问题是:其中一些UICollectionViewCells应该对tap-gestures作出反应,其他人应该将事件转发给UITableViewCell(因此它会触发显示该UITableViewCell的详细视图)。

我一直在研究苹果文档和几个问题,但我无法让它工作。

(我认为应该可以解决这个问题,但以防万一:每个UICollectionViewCell都包含一个UIImageView。)

建议非常感谢。

2 个答案:

答案 0 :(得分:0)

为什么不让uicollectionview单元格处理水龙头,然后在回调中确定要采取的操作。对于一些人来说,当你敲击牢房时,你可以做你现在所做的事情。对于其他人你可以做任何事情。

答案 1 :(得分:0)

如果我理解正确,你可以这样做:

  1. 在您不想处理事件的单元格上设置cell.userInteractionEnabled = NO
  2. 使用此方法覆盖hitTest中的UICollectionView

    -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
    {
        UIView *hitTest = [super hitTest:point withEvent:event];
        return hitTest == self ? nil : hitTest;
    }
    
  3. 因此,在启用了用户交互的情况下点击单元格外的任何位置,super将返回集合视图,并返回nil,从而导致表格视图单元格处理该事件。