How to refresh a UIWebView by a “pull down and release” gesture?

前端 未结 4 422
夕颜
夕颜 2020-12-25 08:52

I know that this is possible in the Tweetie for iPhone or the xkcd iPhone app, but they are using a table. Any idea if this can be done for a simple UIWebView a

相关标签:
4条回答
  • 2020-12-25 09:18

    To retrieve scroll events on UIWebView I personnaly use this code to get the scrollview that is inside the UIWebView :

    - (void) addScrollViewListener
    {
        UIScrollView* currentScrollView;
        for (UIView* subView in self.myWebView.subviews) {
             if ([subView isKindOfClass:[UIScrollView class]]) {
                currentScrollView = (UIScrollView*)subView;
                currentScrollView.delegate = self;
            }
        }
    }
    

    It's working. You can also use it to call [(UIScrollView*)subView setContentOffset:offSet animated:YES]; The only problem may be not to pass Apple code checking. I don't know yet since I'm still in coding phase.

    Anyone tried that yet ?

    0 讨论(0)
  • 2020-12-25 09:22

    To get a reference for the UIScrollView in UIWebView, simply search it by iterating trough subviews.

    for(id eachSubview in [webView subviews]){
            if ([eachSubview isKindOfClass:[UIScrollView class]]){
                scrollView = eachSubview;
                break;
            }
    }
    

    After that you can easily wire up things to your EGORefreshTableHeaderView interface with the UIWebView and the UIScrollView delegate callbacks.

    0 讨论(0)
  • 2020-12-25 09:24

    To tell the truth, UIWebVIew class has an undocumented getter method called _scrollView; So the code goes:

    scrollView = [webView _scrollView];

    0 讨论(0)
  • 2020-12-25 09:33

    FYI, iOS 5 has officially introduced the property scrollView in UIWebView. I tested it. It worked perfectly with EGO's pull and refresh code. So the problem is no longer a problem for any iOS 5 devices.

    For downward compatibility, you still need @CedricSoubrie's code though.

    0 讨论(0)
提交回复
热议问题