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

Iphone 检测UITableView是否已滚动到底部时出现问题,iphone,objective-c,cocoa-touch,uitableview,uiscrollview,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(

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

}

这很好,但唯一的问题是当用户向下拉tableview(比如拉刷新)时,会触发代码。如何处理此问题?

在didScroll方法中存储scrollview的最后位置。如果检测到向下滚动,并且最后一个位置已经是scrollview的底部,则忽略它。

尝试使用另一种算法检测是否已到达表视图的底部。例如,查看cellForRowAtIndexPath:(NSIndexPath*)indexPath到当前单元格的indexPath,如果indexPath中的行数等于数据数组中的行数,则达到了底部。

尝试这种方法

    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]];
    }
if(self.tableview.contentOffset.y=(self.tableview.contentSize.height-self.tableview.bounds.size.height)){
NSLog(@“底部!”);
NSLog(@“%@,[self getLastMessageID]);
[self-getMoreStuff:[self-getLastMessageID]];
}

不要忘记选项卡栏:(