【问题标题】:Forward tap-gesture to superview of UICollectionViewCell将点击手势转发到 UICollectionViewCell 的超级视图
【发布时间】:2013-06-25 05:48:55
【问题描述】:

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

我的问题是:其中一些 UICollectionViewCell 应该对点击手势做出反应,其他应该将事件转发到 UITableViewCell(因此它会触发显示该 UITableViewCell 的详细视图)。

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

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

非常感谢您的建议。

【问题讨论】:

    标签: ios objective-c uicollectionview


    【解决方案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 中的滚动吗?
    • 当然。如果您需要滚动,您可以按照@FelixLam 的建议使用回调。
    • 属性是userInteractionEnabled = NO
    • @bcattle 是的。谢谢。
    【解决方案2】:

    为什么不只让 uicollectionview 单元处理点击,然后在回调中确定要采取的操作。对于某些人来说,您可以在点击单元格时执行您现在所做的事情,对于其他人来说,您可以随心所欲。

    【讨论】:

      猜你喜欢
      • 2013-06-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多