使用UIRefreshControl并设置contentInset时,表视图内容会跳下来

时间:2013-08-07 16:17:46

标签: ios ios6 uitableview uirefreshcontrol

所以我有UITableViewController的标准子类和表视图。现在我已将内容设置为

self.tableView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0);

我也是以标准方式使用UIRefreshControl。

self.refreshControl = [[CTRefreshControl alloc] init];
[self.refreshControl addTarget:self action:@selector(loadData:) forControlEvents:UIControlEventValueChanged];

如果表格视图包含足够的滚动数据(因此内容大小高度超过表格视图的高度),则所有工作都很顺畅。如果表格中没有足够的数据(例如只有2行),那么当我开始向下拉动时,它会顺利进行,然后突然向下跳跃大约20个点。滚动其他方向时也会发生同样的事情。当没有刷新控件或我没有更改contentInset时,它不会发生。有任何想法吗?全部在iOS 6上。

1 个答案:

答案 0 :(得分:1)

您需要将contentInset的更改放在这样的动画块中......

[UIView animateWithDuration:0.2
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     self.tableView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0);
                 }
                 completion:nil];

(从内存中输入,因此您可能需要检查代码是否完成)。

这可以解决您的问题。