UITableView自动下拉与分页



我在objective-c上有一个巨大的遗留项目,并试图在我们开始将其转移到swift之前实现新功能。所以我现在正在做聊天和创建搜索;就像电报一样。在我们从服务器得到200个状态后,我们在聊天中得到41条消息。我将用户屏幕设置为此消息的中间,并且需要在两侧实现分页。我已经成功地添加了两个功能,需要解决最后一个问题:

当用户向上或向下滚动到另一个消息时,我已经检查了scrollViewDidScroll:

CGPoint offset = scrollView.contentOffset;
CGSize  size = scrollView.contentSize;
CGFloat height = _tableView.frame.size.height;
if (offset.y > size.height - height) {
if((isLoadingMessages == NO) && (loadedMessagesUp % MAX_LOADING_MESS == 0)){
_isFromSearch = false;
NSInteger create = [[[_messagesArray lastObject] objectForKey:@"create"] integerValue];
_dateForPagination = create;
scrollDirectionDown = false;
[self loadMessages];
NSLog(@"pagination up");
}
}
if(offset.y < 10) {
if((isLoadingMessages == NO) && (loadedMessagesDown % MAX_LOADING_MESS == 0)){
_isFromSearch = false;
NSInteger create = [[[_messagesArray firstObject] objectForKey:@"create"] integerValue];
_dateForPagination = create;
scrollDirectionDown = true;
[self loadMessages];
NSLog(@"pagination down");
}
}

所以,问题是:

当我已经scrollledup,我的[_tableVIew contenttoffset]自动计算(或者我找不到它发生的地方,但我已经检查了所有项目与cmd+f)。但是当用户scrollDOWN时,表视图给新消息添加了方法:

的消息
if (scrollDirectionDown) {
_paginationMessagesArray = [[[_paginationMessagesArray reverseObjectEnumerator]allObjects]mutableCopy];
[_paginationMessagesArray addObjectsFromArray: _messagesArray];
_messagesArray = _paginationMessagesArray;
}

之后,我的tableview掉落到[tableview offset] = 0 (equal indexPath。因此,这将自动调用带有分页的方法,并再次将页面拖放到第一个元素。

我认为我需要在[tableview reloadData]之后设置新的contenttoffset。但是我不会计算。有人可以帮助:如何计算偏移从到tableView minY到tableView当前?还是我什么都做错了?我想我在这个可怕的项目中找不到什么方法,但我希望你能帮助我解决这个问题。

在这张图中,我需要计算从黑色方块底部到蓝色方块按钮的偏移量。因为在[tableView reloadData]之后黑色方块(这是手机屏幕)立即下降到蓝屏的底部并再次翻页。它不断地重复着……

非常感谢,伙计们!

我通过在google上改变搜索结果找到了答案:D我花了3天时间在这上面。

UIScrollView只在底部禁用垂直弹跳

最新更新