我有一个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?)
我不确定发布代码是否相关。这是一个复杂的视图,其中包含许多镶嵌的部分。我更喜欢在这种情况下会有所帮助的任何调试技术。
非常感谢您!
编辑
这里的精度更高:
除了UITableView
和UICollectionView
之外,没有其他手势。
我的视图层次结构是这样的:
|--- UITableViewCell --------------|
|-|---cell's content view -------|-|
|-|-|---container view --------|-|-|
|-|-|-|---labels ------------|-|-|-|
|-|-|-|---collection view ---|-|-|-|
|-|-|-|----------------------|-|-|-|
|----------------------------------|
单元格内容视图中的容器视图具有其用途。但是我感觉是该视图阻止了滚动手势。
除了isUserInteractionEnable = true
之外,还有其他什么可以阻止手势事件进入超级视图的吗?此容器视图未附加任何手势。
答案 0 :(得分:0)
我最终通过将容器视图的背景色从.clear更改为某种灰色来使其工作。
我感到困惑,因为透明视图(颜色:.clear)应该参与事件响应者链。话虽这么说,从容器视图到tableView,所有内容都设置为.clear。因此,显示的颜色是viewController的背景色。
我不确定这是我的错误设置还是UIKit中的错误。我猜是在我身上吗?无论如何...我会留在这里,以防其他人遇到这个问题。