UITableView dragging distance with UIRefreshControl

I'm having some trouble on implementing a UIRefreshControl on a UITableView.

Everything is working fine except the fact that I have to scroll something like 80% of the screen for the UIRefreshControl to get triggered. Sometimes I'm not even able to trigger it since there is a tab bar on the bottom of the screen, which cancels the scrolling movement when the finger reaches it.

I've looked at other apps, namely Apple's 'Mail', where the UIRefreshControl is triggered after scrolling only 30% of the screen.

What am I missing? Really need help on this one!

Thanks in advance


I had a similar problem and it's quite possible that's the same cause for you. For me happens that I hided the scroll indicator making me unable to see the obvious cause of the problem: the UIScrollView 's height is much greater than its superView ...

Double check your UIScrollView 's height because the "dragging distance" it's just a percentage of that height. Same goes for UITableView too, since it's a child class of UIScrollView .

EDIT: Seems that this isn't the only way to reproduce this problem, since the required drag distance to trigger the refresher is calculated in a buggy way. Refer to this question for more info.

But in general it will happen if your UIScrollView 's height is different than his parent container (eg the screen itself).


您可能不需要使用UIRefreshControl,并且只需使用scrollViewDidScroll(或tableViewDidScroll,如果是tableView)就可以相应地处理您的刷新,因为无法修改UIRefreshControl。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if ((scrollView.contentOffset.y + scrollView.frame.size.height) >=    scrollView.contentSize.height)
    {
        // Refresh from here
    }
}
链接地址: http://www.djcxy.com/p/13150.html

上一篇: 关闭在HTMLUnit中禁用CSS?

下一篇: UITableView使用UIRefreshControl拖动距离