【问题标题】:UITableView Not ScrollingUITableView 不滚动
【发布时间】:2026-01-18 21:10:01
【问题描述】:

我有一个表格视图,触摸时不会让步。这让我很困惑。这是最近添加的子视图(我检查过 - 它是我视图的子视图数组中的最后一个条目),并且由于某种原因它不会向上或向下滚动。如果我在 tableview 上疯狂地点击多个手指,它会偶尔突出显示我的一个手指下的单元格,但它甚至不会滚动一点。我已将行数设置为 100(比屏幕上可见的要多得多),并且我已将 'bounces'、'scrollEnabled' 和 'userInteractionEnabled' 属性设置为 YES。

我知道我在这里没有提供太多内容,但是如果有人至少可以提供一些关于如何进行调试的提示,我将非常感激。我可以从 tableView 手势识别器处理方法中登录吗?我可以测试我的触摸去向吗?

请帮忙!

谢谢。

【问题讨论】:

  • 请提供您的一些代码
  • 我认为值得注意的是,在模拟器中,当您拖动而不是通常在 macbook 上进行的两指滚动时,滚动会起作用。

标签: ios scroll touch tableview


【解决方案1】:

TableView 基本上是一个专门的 ScrollView。如果它不滚动,在我看来它可能是两件事之一。要么是某些东西位于 TableView 之上,并且在 TableView 获取手势事件之前正在捕获它们,要么您错误地设置了边界和 contentSize。对于 TableView 或 ScrollView,view 的边界应该是可见区域,contentSize(应该由 TableView 处理,不需要你做任何事情)是 Table 中所有单元格的大小。

所以我会检查表格视图的边界并确保将其设置为 contentSize,因为这会导致它也不会滚动。

只是为了确保它在顶部,请尝试调用

[view bringSubviewToFront:tableView];

【讨论】:

  • 请注意,如果您在模拟器中拖动 tableview 而不是尝试在触控板上使用两根手指滚动,则 tableview 上的滚动实际上会起作用(这是 mac 上的默认设置)。
【解决方案2】:

在我的情况下,tableview“用户交互”被禁用。我刚刚启用它并工作。

【讨论】:

    【解决方案3】:

    在我的例子中,tableView "canCancelContentTouches" 没有启用。我在情节提要中将其设置为 true。

    【讨论】:

      【解决方案4】:

      您可以检查添加了 tableview 的父级的框架吗?确保父视图具有正确的框架以包含表格视图。我曾经遇到过这个问题,我的表格视图没有响应触摸并且框架大小存在一些问题。还要检查你的 tableview 的边界和框架

      -anoop

      【讨论】:

        【解决方案5】:

        请检查 tableview 滚动是否启用。 我只是讨厌 XIB 和 Storyboard。经过 30 分钟的调试,发现 XIB 中没有启用滚动。

        谢谢

        【讨论】:

          【解决方案6】:

          基本上,表格视图只是一种滚动视图。因此,如果它不滚动,您应该确定表格视图的框架大小是否小于表格视图的 contentSize。为此,只需记录 tableView 的滚动视图的框架和内容大小。如果您发现框架大小大于或等于您的内容大小,只需更正视图的布局约束即可。我希望它会奏效。

          【讨论】: