2011-07-28 92 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

你能告訴我在代碼的例子嗎? –