在加载更多数据时将UITableView滚动到底部会导致弹跳突然停止

时间:2015-12-04 17:47:51

标签: uitableview

简而言之:从远程服务加载更多内容时如何实现流畅的UITableView动画?

长期:

我在tableView:willDisplayCell中有一个方法可以确定何时寻找更多内容。提取内容后,会在我的UITableView中添加页脚视图,并显示UIActivityIndicator。如果在UITableView反弹动画停止后返回我提取的内容,那么一切都很有效。

然而,当滚动不一定到达底部以触发反弹时会发生半边缘情况,但是它足够向底部触发更多数据被提取。随着UITableView逐渐减慢,返回数据,重新加载UITableView,然后突然停止UITableView的自然减速。

我可以添加一个dispatch_after来保证在弹跳动画完成后重新加载UITableView但是总是会突然停止,因为"正在加载"在提取内容时滚动时会显示页脚。

我还尝试添加一个阻止方法,在调用scrollViewDidEndDecelerating后重新加载我的内容,但它仍然无法正常工作。

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

所以我让它发挥作用,我想当反弹停止后,当我们处于单元格的底部时,分页应该触发。

- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView{    
    // only fetch when we are at the very bottom after bounce has stopped
    float scrollYPosition = scrollView.contentOffset.y + CGRectGetHeight(scrollView.frame);
    if((scrollYPosition >= scrollView.contentSize.height) && !self.noMoreData && !self.isFetching){
        [self fetchData];
    }
}