如何通过“下拉和释放”手势刷新UIWebView?

时间:2010-07-11 15:47:53

标签: iphone uiwebview scroll pull-to-refresh

我知道这可以在Tweetie for iPhone或xkcd iPhone应用程序中使用,但他们正在使用表格。不知道是否可以为简单的UIWebView做到这一点?我知道this SO question中的Javascript建议,但是如何在本地制作呢?

4 个答案:

答案 0 :(得分:13)

要在UIWebView上检索滚动事件,我个人使用此代码来获取UIWebView内的滚动视图:

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

它正在运作。您也可以使用它来呼叫[(UIScrollView*)subView setContentOffset:offSet animated:YES];唯一的问题可能是没有通过Apple代码检查。我还不知道,因为我还处于编码阶段。

有人试过吗?

答案 1 :(得分:5)

仅供参考,iOS 5已在UIWebView中正式引入了属性 scrollView 。我测试了它。它与EGO的拉取和刷新代码完美配合。因此,对于任何iOS 5设备而言,问题不再是问题。

为了向下兼容,你仍需要@ CedricSoubrie的代码。

答案 2 :(得分:1)

要在UIWebView中获取UIScrollView的引用,只需通过迭代子视图进行搜索。

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

之后,您可以使用UIWebView和UIScrollView委托回调轻松地将内容连接到您的EGORefreshTableHeaderView界面。

答案 3 :(得分:1)

说实话,UIWebVIew类有一个名为_scrollView的未记录的getter方法; 所以代码是:

scrollView = [webView _scrollView];