UITableView setContentOffSet 导致不必要的滚动到顶部

Posted

技术标签:

【中文标题】UITableView setContentOffSet 导致不必要的滚动到顶部【英文标题】:UITableView setContentOffSet is causing unwanted scrolling to the top 【发布时间】:2014-09-17 12:42:50 【问题描述】:

当我的视图加载从 api 获取数据时,我正在模拟拉动刷新。

[refreshControl beginRefreshing];
CGPoint newOffset = CGPointMake(0, -refreshControl.frame.size.height);
[tableView setContentOffset:newOffset animated:YES];

当数据返回时,它会停止刷新控制,重新加载 tableview 并

 [refreshControl endRefreshing];   
 [_postsTableView setContentOffset:CGPointZero animated:YES];

如果在表格视图的顶部很好,但如果在中间或底部,它会滚动到顶部,这是不受欢迎的。

【问题讨论】:

拉动刷新将自动调整,无需为此设置内容偏移。使用 SVPullToRefresh 改善您的拉动刷新体验 “重新加载tableview”如何? 您可以使用此 [tableview reload] 或者您可以通过在特定索引路径处插入行来添加从服务器加载的更多值。这将产生良好的动画效果。如果您修复了任何时候只有 10 行会显示在 tableview 中,那么使用 [tableview reload] 【参考方案1】:

看起来您可以将其包装起来以避免不良行为:

if (_postsTableView.contentOffset.y < 0) 
    [_postsTableView setContentOffset:CGPointZero animated:YES];

【讨论】:

像你这样的人让世界旋转起来。惊人的!完美! 对不起,我还没有足够的代表点来支持这个。 :( 但真的很感激

以上是关于UITableView setContentOffSet 导致不必要的滚动到顶部的主要内容,如果未能解决你的问题,请参考以下文章

UItableview 单元格的动态高度与 UItableview 单元格内的 UItableview

UITableView

水平 UITableView 中的垂直 UITableView

如何与重叠显示的 UITableView 交互另一个 UITableView

在 UITableView 中的 UINib 中重新加载 UITableView

iOS小技能:1. 什么是UITableView? 2. UITableView如何展示数据