我正在使用EGORefreshTableHeaderView [1]从服务器获取新数据到UITableView。
这非常好用,但在iOS 5.1中,EGORefreshTableHeaderView在用户释放下拉时不会回滚到预期的高度。通常它应该回滚到60px的contentInset
。然后加载视图应该在加载过程所用的时间内可见,并且在滚动回到0px插入之后。
第一次回滚应该在egoRefreshScrollViewDidEndDragging:scrollView
方法中进行。
- (void)egoRefreshScrollViewDidEndDragging:(UIScrollView *)scrollView {
BOOL _loading = NO;
if ([_delegate respondsToSelector:@selector(egoRefreshTableHeaderDataSourceIsLoading:)]) {
_loading = [_delegate egoRefreshTableHeaderDataSourceIsLoading:self];
}
if (scrollView.contentOffset.y <= - 65.0f && !_loading) {
if ([_delegate respondsToSelector:@selector(egoRefreshTableHeaderDidTriggerRefresh:)]) {
[_delegate egoRefreshTableHeaderDidTriggerRefresh:self];
}
[self setState:EGOOPullRefreshLoading];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f);
[UIView commitAnimations];
//I've also tried it with block animations! But doesn't work!
/*[UIView animateWithDuration:0.2 animations:^{
scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f);
}];*/
}
}
问题在于,当用户在屏幕的一半上释放滚动视图时(如下面的屏幕截图所示),滚动视图不会反弹回60px inset,它应该重新加载数据。
我的第一个想法是,这是因为动画。因此我将其更改为阻止动画,但没有任何变化。我想问题是动画不会在commitAnimations
上执行,而是在加载结束时执行。
有人有解决方案吗?
[1] ...... https://github.com/enormego/EGOTableViewPullRefresh
答案 0 :(得分:1)
我会提取他们的演示应用程序并遵循他们的委托方法。
把它放在didEndDragging中:
[_delegate egoRefreshScrollViewDidEndDragging:scrollView];