2011-07-28 48 views
9

我用下面的代码来检测,如果我已经达到了一个UITableView问题检测是否已经的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]]; 
    } 

} 

这正常的底部,但唯一的问题是当用户正在拉下桌面视图(如拉动刷新)代码触发。我该如何处理?

回答

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]]; 
    } 
+0

不要忘记标签栏:( – Dmytro

0

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

0

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

+0

你能告诉我在代码的例子吗? –