【问题标题】:UITableView Won't Scroll In Certain ConditionsUITableView 在某些情况下不会滚动
【发布时间】:2009-10-05 22:58:45
【问题描述】:

我的应用有一组类别。一个类别可以有子类别。

DirectoryCategoryController 是第一个屏幕,显示所有顶级类别。效果很好。当您点击一个单元格时,如果选择的类别有子类别,我会实例化一个新的 DirectoryCategoryController 实例并推送它以显示子类别。从那里,您点击一个子类别并查看内容。

问题是,虽然顶层工作正常,但当我点击并查看子类别时,表格视图不会滚动。搜索栏被触摸,表格单元被触摸但上下滚动不起作用,就像表格视图在空间中垂直冻结一样。

如果我点击搜索栏并点击取消,或者如果我进入子类别内容然后回击,则相同的不滚动的表格视图可以正常工作。

此外,如果 table view 的项目多于屏幕显示(在此布局中大约任何大于 8 的项目),则一切正常。

很奇怪的问题;有点让我大吃一惊。有什么见解吗?

【问题讨论】:

  • "如果表格视图中的项目多于屏幕显示...,一切正常" 如果项目较少,那么表格不需要滚动,不是吗?
  • 问题是“几乎”合适。这似乎是 iPhone OS 中的一个错误,它只是无法确定是否需要滚动。

标签: iphone cocoa-touch uitableview


【解决方案1】:

所以,我想通了这一点,并认为我会作为参考回答。

在这一点上,我认为这可能是 iPhone 操作系统的错误,我正在提交 RADAR。

如果所有内容都适合一个屏幕,则 UIScrollView(UITableView 是其子类)将不会尝试滚动。

就我而言,滚动视图似乎认为一切都合适(非常接近),但事实并非如此。实际上,如果您从 UITableView 中删除了 UISearchBar,那么一切都会适合并且不需要滚动。我的猜测是,在附加 UISearchBar 时它错误地确定了几何图形。

无论如何,解决方法是添加以下内容: [self.tableView setAlwaysBounceVertical:YES];

奇怪的是,当另一个视图被推送然后弹出时,垂直反弹运行良好,进一步怀疑这是一个 iPhone 错误。

【讨论】:

  • 谢谢@Hunter!我在 iOS 4.3.3 和 Xcode 4.0.2 上遇到了完全相同的问题。而且您的解决方案仍然有效!谢谢!!!
  • 还帮助我停止用头撞桌子,谢谢。
  • 我希望我能多次投票。我在多个应用程序上遇到过这个问题。我刚刚在模拟器中做了一些测试——它仍然发生在 iOS 5.0 和 5.1 上,但在 6.0 中似乎已修复。
【解决方案2】:

当使用 A UITableViewUISearchBar 作为标题视图时,我注意到了同样的事情,正如在 Xcode 4.3.1 的 Interface Builder 中配置的那样。在我的viewDidLoadMethod 中,我添加了以下代码,它为我解决了问题:

self.contactsTable.bounces = YES;

我认为这是禁用 bounces 属性的错误,但可以通过重新启用它来修复。

【讨论】:

    猜你喜欢
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多