iOS聊天详情滚动到顶部,自动刷新解决方案(仿微信)
项目中刷新控件使用的是:MJRefresh
思路:
实时监测Tableview的滚动状态,当Tableview滚动到顶部时,自动刷新。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
[self beginHeaderRefreshingAction];
}
- (void)beginHeaderRefreshingAction {
NSLog(@"contentOffsetY --- %@", @(_tableView.contentOffset.y));
if ( !_hasNextPage ) { // 判断是否有下一页数据
return;
}
if ( _tableView.contentOffset.y <= 0 ) {
[_tableView.mj_header beginRefreshing];
}
}
需要设置tableview的MJRefreshHeader
。相关逻辑如下:
__weak typeof(self) weakself = self;
MJRefreshHeader *refreshHeader = [MJRefreshHeader headerWithRefreshingBlock:^{
[weakself loadNextPage];
}];
_tableView.mj_header = refreshHeader;
- (void)loadNextPage {
BOOL isLoading = _dataModel.isLoading;
if ( _hasNextPage && !_isLoading ) {
// request next page data ...
} else if( _tableView.mj_header &&
_tableView.mj_header.isRefreshing ) {
[_tableView.mj_header endRefreshing];
}
}
以上。