UITableView在某些条件下不会滚动

时间:2009-10-05 22:58:46

标签: iphone cocoa-touch uitableview

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

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

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

如果我点击搜索栏并点击取消或者如果我进入子类别内容然后回击,那么没有滚动的同一个表视图就可以了。

此外,如果表格视图中的项目数量多于屏幕上适合的项目(此布局中大于8的任何项目),则一切正常。

很奇怪的问题;有点儿在吹我的脑海。有什么见解吗?

2 个答案:

答案 0 :(得分:15)

所以,我想出了这个,并认为我会回答作为参考。

此时,我认为这可能是一个iPhone操作系统错误,我正在提交雷达。

如果UITableView是一个子类,UIScrollView将不会尝试滚动,如果一切都适合一个屏幕。

在我的情况下,看起来滚动视图认为一切都很合适(它非常接近),但事实并非如此。实际上,如果你从UITableView中删除了UISearchBar,那么一切都很合适,而且不需要滚动。我的猜测是,当连接UISearchBar时,它错误地确定了几何形状。

无论如何,解决方法是添加这个: [self.tableView setAlwaysBounceVertical:YES];

奇怪的是,当另一个视图被推出然后弹出时,垂直弹跳工作正常,进一步让我怀疑这是一个iPhone的错误。

答案 1 :(得分:0)

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

self.contactsTable.bounces = YES;

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