私はEGORefreshTableHeaderView [1]を使用して、サーバーから新しいデータをUITableViewにフェッチしています。EGORefreshTableHeaderViewがiOS 5.1で正しく動作していません
これはかなりうまくいきますが、iOS 5.1では、EGORefreshTableHeaderViewは、ユーザーがプルダウンを解除したときに目的の高さまでスクロールしません。通常、スクロールしてcontentInset
(60ピクセル)に戻す必要があります。ローディングプロセスにかかる時間の間ローディングビューが表示され、その後にスクロールして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);
}];*/
}
}
問題は、ユーザが(下のスクリーンショットに示されている)、画面の半分にスクロールビューを離したとき、scrollviewバックそれがデータをリロードする必要があり60PXはめ込みにバウンスしないことです。
私の最初のアイデアは、それがアニメーションのためだということでした。だから私はアニメーションをブロックするように変更しましたが、何も変わりません。私は問題は、アニメーションがロードの最後にcommitAnimations
で実行されないことです。
誰もがこのためのソリューションを持っていますか?
[1] ... https://github.com/enormego/EGOTableViewPullRefresh
:
は、この内部didEndDraggingを置きます。 didEndDraggingでは、私は:\t [self.refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView]; 'これは正しく呼び出されます。 – Chris
Ehm、ありがと...私はすべて新しいものを作って、デリゲートをもう一度コピーしました。私が前にやったと思っていたのと同じように変更しましたが、今は動作しています...違いは分かりません。 – Chris
ハハはうまくいきました。 – chourobin