我正在使用以下代码来检测我是否已经到达UITableView的底部
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
if(self.tableView.contentOffset.y >= (self.tableView.contentSize.height - self.tableView.bounds.size.height)) {
NSLog(@"bottom!");
NSLog(@"%@", [self getLastMessageID]);
[self getMoreStuff:[self getLastMessageID]];
}
}
这样可以正常工作,但唯一的问题是当用户拉下桌面视图(如拉动刷新)时代码会触发。我怎么处理这个?
答案 0 :(得分:19)
试试这种方式
if(self.tableview.contentOffset.y<0){
//it means table view is pulled down like refresh
return;
}
else if(self.tableView.contentOffset.y >= (self.tableView.contentSize.height - self.tableView.bounds.size.height)) {
NSLog(@"bottom!");
NSLog(@"%@", [self getLastMessageID]);
[self getMoreStuff:[self getLastMessageID]];
}
答案 1 :(得分:0)
将scrollview的最后位置存储在didScroll方法中。如果您检测到向下滚动且最后一个位置已经是滚动视图的底部,则忽略它。
答案 2 :(得分:0)
尝试使用另一种算法来检测,您已到达表格视图的底部。例如,查看当前单元格的indexPath的cellForRowAtIndexPath:(NSIndexPath *)indexPath,如果IndexPath中的行数等于数据数组中的行数,则达到底部。