【问题标题】:UITapGesture not arriving at UICollectionView (collection view is subview of TableViewCell)点击手势未到达 CollectionView(集合视图是 TableViewCell 的子视图)
【发布时间】:2014-03-09 23:50:31
【问题描述】:

我有一个 UITableViewCell->contentView,其中包含一个带有 Horizo​​ntalFlowLayout 的 UICollectionView。

TableViewCell 是 UICollectionView 的委托和数据源。

所有平移行为都按预期工作。向上/向下平移将滚动表格视图。在表格单元格上向左/向右平移将滚动 UICollectionView。

但是,表格单元格上的 TAPPING 不会传递到 UICollectionView。

我知道这一点,因为代码在:

- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath {}

永远不会被调用。

我尝试手动调整 UITableView 手势识别器的代表,如下所示:

- (void)viewWillAppear:(BOOL)animated {

    // connect our gesture handlers so we stop the tableView from grabbing taps
    for (UIGestureRecognizer* gr in playerTable.gestureRecognizers) {
        if (![gr isKindOfClass:[UIPanGestureRecognizer class]]) {
            [gr setDelegate:self];
        }
    }
}

#pragma GestureRecognizer delegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    return NO;
}

但这也没有用。

确保将 TapGesture 传递到 UICollectionView 从而我可以“选择”一个单元格的最佳方法是什么?

PS。我确实查看了各种类似的票证,但找不到适用的解决方案。绝对不会怀疑它已经在这里......只是没有看到它。

【问题讨论】:

  • 您的表视图是否调用了委托方法 shouldHighlightRowAtIndexPath:?在这种情况下,您的问题可能是表格视图得到了触摸。这里的问题是嵌套的滚动视图,有时可能很复杂。我将返回我的思考洞穴进行进一步的思考。
  • 我还没有真正连接代理,但我可以看到。我想如果我不是为了突出显示或选择它会通过。让我知道你的洞穴照亮了什么。 ;)

标签: ios objective-c uitableview uicollectionview


【解决方案1】:

您不应将 UITableViewCell 设置为委托,而应将任何托管 UITableView 的视图控制器设置为。 This 是一个很棒的教程。

【讨论】:

  • 我确实看过那个教程。我看到他在哪里说它“非常非常糟糕”,但没有解释为什么。你能解释一下这种情况有什么不好吗,它似乎工作得很好(除了触摸问题)
  • 因为 UITableViewCell 的关注点不是将数据填充到集合视图中。它不干净。到目前为止,您只发现了手势问题,但如果您继续使用它,您会发现其他意外行为。
  • 嗯,我可以看到,但仍然不确定我是否相信。水龙头问题完全不相关,我的错,不是结构问题。 TableCell 的关注点是将数据填充到该表格单元格中,如果该单元格包含一个集合视图,那么它也应该处理它,不是吗?我认为在这种设置中代码局部性要好得多,因为让顶级控制器成为嵌入式集合视图的数据源。
【解决方案2】:

这是一个手掌问题......在所有其他正在抓取水龙头的东西之上有另一个手势识别器。没有它,可以按预期完美运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多