EGORefreshTableHeaderView [1]を使用して、サーバーからUITableViewに新しいデータをフェッチしています。
これはかなりうまく機能しますが、iOS 5.1では、ユーザーがプルダウンを離したときにEGORefreshTableHeaderViewが意図した高さにスクロールバックしません。contentInset
通常、60pxまでスクロールバックする必要が あります。次に、読み込みプロセスにかかる時間、読み込みビューが表示され、その後、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の挿入図に戻らないことです。
私の最初の考えは、それはアニメーションのせいであるということでした。そこで、アニメーションをブロックするように変更しましたが、何も変更されていません。commitAnimations
問題は、読み込みの最後にアニメーションが実行されないことだと思います。
誰かがこれに対する解決策を持っていますか?