检测UITableView是否已滚动到底部时出现问题

时间:2011-07-28 11:18:22

标签: iphone objective-c cocoa-touch uitableview uiscrollview

我正在使用以下代码来检测我是否已经到达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]];
    }

}

这样可以正常工作,但唯一的问题是当用户拉下桌面视图(如拉动刷新)时代码会触发。我怎么处理这个?

3 个答案:

答案 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中的行数等于数据数组中的行数,则达到底部。