我在我的iphone应用程序中有一些(分组风格)表(只在屏幕的一部分,虽然添加了接口生成器,但不是UITableViewController的子类),80%的时间都很小,将适合在屏幕上。当表格适合屏幕时,我想禁用滚动,让它更干净一点。但是如果表格离开屏幕(当行后来添加到它时),我想再次启用滚动(因为否则您无法看到该内容)。

有办法做到这一点吗?我怎么也想不出来。我知道该怎么做:

tableView.scrollEnabled = NO;

但我不确定在哪里,或者我是否需要计算表对象大小之类的来让它工作。

更新: 下面是最终对我有用的解决方案:

if (table.contentSize.height < table.frame.size.height) {
   table.scrollEnabled = NO;
 }
else {
   table.scrollEnabled = YES;
 }

我在表上调用reloadData之后运行这段代码,它计算出了正确的大小,并且似乎可以工作。

table.frame.size.height是显示在屏幕上的对象的实际大小(你可以在Interface Builder中看到这一点),而table.contentSize.height是:页眉、页脚和每个单元格的高度相加。


当前回答

试试这个

[yourTableView setBounces:NO];

其他回答

我认为你想要设置

tableView.alwaysBounceVertical = NO;

tableview单元格的默认高度是44.0f。你必须有你的数据源在数组中?然后检查[array count]*44.0f是否超出了帧边界,如果是,就设置tableview。scrollEnabled = NO,否则设置为YES。在你为特定的表视图找到数据源的地方做。

你可以通过在滚动视图区域中选择/取消选择这些来设置启用/禁用反弹或滚动表视图

你可以在你的故事板中编辑它(如果你正在使用的话)。在表格视图下,有一个复选框显示“Scrolling Enabled”。取消检查,你就完成了。

这对我来说很管用。

tableView.isUserInteractionEnabled = false