UITapGesture没有到达UICollectionView(集合视图是TableViewCell的子视图)

时间:2014-02-11 22:37:25

标签: ios objective-c uitableview uicollectionview

我有一个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。我确实看了各种类似的门票,但找不到适用的解决方案。绝对不会怀疑它已经在这里......只是没有看到它。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这是一个面部手掌问题......在抓住水龙头的其他所有东西之上有另一个手势识别器。如果没有那个就能完美地运作。