UITableViewCell无法拦截滚动事件

时间:2018-08-30 13:05:42

标签: ios uitableview uicollectionview

我有一个tableView,其中某些单元格中有UICollectionView(用于水平轮播)。它适用于每个单元格,除了不能滚动tableView的单元格(在模拟器或设备上)。更确切地说,如果触摸发生在UICollectionViewCell上,则可以滚动,但如果触摸发生在UITableViewCell的不包含UICollectionVIew的部分上,则不能滚动。

我想找出原因,但是我不确定如何进行调试。是否可以设置一个断点,也许是一个符号断点,以了解触​​摸事件的去向?

我尝试用这3种方法(从单元格本身)打印内容,以了解如何以及何时调用它们,但是没有被调用。

override func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool 

override func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool 

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 

我不确定发布代码是否相关。这是一个复杂的视图,其中包含许多镶嵌的部分。我更喜欢在这种情况下会有所帮助的任何调试技术。

非常感谢您!

编辑

这里的精度更高:

除了UITableViewUICollectionView之外,没有其他手势。

我的视图层次结构是这样的:

|--- UITableViewCell --------------|
|-|---cell's content view -------|-|
|-|-|---container view --------|-|-|
|-|-|-|---labels ------------|-|-|-|
|-|-|-|---collection view ---|-|-|-|
|-|-|-|----------------------|-|-|-|
|----------------------------------|

单元格内容视图中的容器视图具有其用途。但是我感觉是该视图阻止了滚动手势。

除了isUserInteractionEnable = true之外,还有其他什么可以阻止手势事件进入超级视图的吗?此容器视图未附加任何手势。

1 个答案:

答案 0 :(得分:0)

我最终通过将容器视图的背景色从.clear更改为某种灰色来使其工作。

我感到困惑,因为透明视图(颜色:.clear)应该参与事件响应者链。话虽这么说,从容器视图到tableView,所有内容都设置为.clear。因此,显示的颜色是viewController的背景色。

我不确定这是我的错误设置还是UIKit中的错误。我猜是在我身上吗?无论如何...我会留在这里,以防其他人遇到这个问题。