0

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問題は、読み込みの最後にアニメーションが実行されないことだと思います。

問題のスクリーンショット

誰かがこれに対する解決策を持っていますか?

[1] ... https://github.com/enormego/EGOTableViewPullRefresh

4

1 に答える 1

1

私は彼らのデモアプリケーションをプルアップし、彼らのデリゲートメソッドに従います。

これをdidEndDraggingの中に入れてください:

[_delegate egoRefreshScrollViewDidEndDragging:scrollView];
于 2012-05-12T09:34:14.953 に答える