EGORefreshTableHeaderView

EGORefreshTableHeaderView

我正在使用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的插图中,该位置应重新加载数据。

我的第一个想法是因为动画。所以我将其更改为阻止动画,但没有任何变化。我想问题是动画不是在commitAnimations上执行,而是在加载结束时执行。



有人对此有解决方案吗?

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

最佳答案

我会拉起他们的演示应用程序,并遵循他们的委托方法。

放到didEndDragging里面:

[_delegate egoRefreshScrollViewDidEndDragging:scrollView];

关于iphone - EGORefreshTableHeaderView在iOS 5.1上无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10562531/

10-09 01:03