【发布时间】:2014-03-09 23:50:31
【问题描述】:
我有一个 UITableViewCell->contentView,其中包含一个带有 HorizontalFlowLayout 的 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