Problem detecting if UITableView has scrolled to the bottom

て烟熏妆下的殇ゞ 提交于 2020-01-01 04:44:04

问题


I'm using the following code to detect if I've reached the bottom of a 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]];
    }

}

This works fine, but the only problem is when the user is pulling the tableview down (like pull to refresh) the code fires. How can I handle this?


回答1:


try this way

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



回答2:


Store the last position of the scrollview in your didScroll method. If you detect a scroll down and the last position was already the bottom of the scrollview then you ignore it.




回答3:


Try to use another algorithm to detect, that you reached the bottom of table view. For example, look at the cellForRowAtIndexPath:(NSIndexPath *)indexPath to the indexPath of a current cell and if the number of row in IndexPath equals to the number of rows in your data array, then you reached a bottom.



来源:https://stackoverflow.com/questions/6858057/problem-detecting-if-uitableview-has-scrolled-to-the-bottom

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!