我在 View Controller 中有两个 View 。 tableview 嵌入在 bottom view 中,segue 会立即触发到该 tableview。所以我在屏幕顶部显示一个静态 View ,在底部显示一个表格 View 。问题是在 tableview 中滚动没有响应。它仅记录下半部分的点击。基本上在 tableview 的中间有一条不可见的线,应用程序没有在它上面注册任何东西(它只注册那些击中我提到的第一个 View 的水龙头,它比 tableview 高得多)所以用户只能滚动如果他只触及桌面 View 的下半部分。 Tableview 正常运行并显示有效数据
有什么想法吗?
最佳答案
您是否检查了 View Hierarchy Debugger(调试->View Debugging->Capture View Hierarchy)?要寻找的典型问题是:
tableView 上方的透明 View 吞噬了触摸事件。要解决此问题,请执行以下操作之一:
- 删除有问题的透明 View
- 通过将有问题的透明 View 移到 tableView 后面来修复 View 层次结构
- 修复布局以确保透明 View 的底部 anchor 不在 tableView 的顶部 anchor 下方
- 表格 View 延伸到它的父 View 之上而没有被剪裁。触摸事件在 View 层次结构的根部接收并转发到适当的 subview 。在这种情况下,底部 View 边界外的触摸事件将不会发送到底部 View 。这就是底部 View 只能转发在其范围内发起的触摸事件的原因。要解决此问题,请执行以下操作之一:
- 在容器 View 上启用
clipsToBounds
(当然,这只会隐藏表格中不可交互的部分) - 修复布局以确保 tableView 完全在其父 View 的范围内
- 在容器 View 上启用
关于iOS 表格 View 滚动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43572655/