Rog*_*Rog 5 iphone cocoa-touch uitableview
我遇到了一个奇怪的滚动问题,我希望有人可以帮助我找出为什么会发生这种情况.
我已经包含了我认为与问题相关的代码部分,但很高兴用其他任何需要更新这篇文章.
我在tableview的内容插入区域中实现了一个pull to refresh视图.刷新会触发Async NSURLConnection,它从Web服务器提取数据,解析相关信息并根据需要刷新表.
这是刷新过程开始的地方:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
if (scrollView.contentOffset.y <= - 65.0f && !self.reloading) {
self.reloading = YES;
[self reloadTableViewDataSource];
[refreshHeaderView setState:EGOOPullRefreshLoading];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
self.tableView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f);
[UIView commitAnimations];
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果我开始滚动,而内容插入是"可见的"(即重新加载期间)我得到这种奇怪的行为,我的表格部分不会一直滚动到顶部 - 请参见截图,以清楚地看到我正在尝试在这里描述.
我在下面列了几个屏幕截图,清楚地标明了目前正在发生的事情.
有谁之前经历过这个吗?关于我应该尝试修复它的任何想法?
非常感谢Rog

如果我开始滚动表格,这就是结果.图像顶部的橙色位是实际的导航栏,我期望表格部分(2010年12月1日).

小智 8
我假设你if (self.reloading) return;的scrollViewDidScroll方法有类似的东西?您可以添加此项来解决问题:
if (self.reloading) {
if (scrollView.contentOffset.y > -60.0 && scrollView.contentOffset.y < 0.0 && insetOnReload) {
[self.tableView setContentInset:UIEdgeInsetsMake(-scrollView.contentOffset.y, 0.0, 0.0, 0.0)];
}
else if (scrollView.contentOffset.y >= 0.0 && insetOnReload) {
[self.tableView setContentInset:UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)];
insetOnReload = NO;
}
return;
}
Run Code Online (Sandbox Code Playgroud)
如果您开始重新加载insetOnReload,YES则设置为.
这不是预期的行为吗?您设置了contentInsettableView 的 ,它与本例中的滚动视图相同,因此 tableView 按给定的边距插入其内容。选项卡视图底部与部分标题之间的距离为 60 像素(视网膜屏幕截图中为 120 像素),因此这与该contentInset.top值完全匹配。
我假设您在刷新后重置contentInset为;0.f刷新完成后,您的错误行为会消失吗?
| 归档时间: |
|
| 查看次数: |
12008 次 |
| 最近记录: |