当前位置:  开发笔记 > 编程语言 > 正文

如何在UIWebView中确定iFrame完成加载

如何解决《如何在UIWebView中确定iFrame完成加载》经验,为你挑选了1个好方法。

在我的应用程序中,我需要一种方法来判断我的webview何时完成加载.如果内容是html,那么很容易做到这一点.但是,我的内容源是javascript与iFrame里面,它会导致多次调用UIWebView finishedLoad方法.无论如何我可以查看iframe是否已完成加载?



1> Adam..:

我发现的唯一万无一失的方法是听三个说它即将开始加载的方法,并且它完成加载(加上等于"失败"),并手动维护每个方法的计数.

即:像:

int outstandingRequests;

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    outstandingRequests++;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    outstandingRequests--;

    if( outstandingRequests < 1 )
    viewLoadingPleaseWait.hidden = TRUE;
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    outstandingRequests--;
}

我通常也不得不覆盖didFail方法 - Apple错误地使用它来报告,例如YouTube播放器已经接管了YouTube视频的处理.这不是一个失败,它是一个"页面由不同的应用程序加载".

例如

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    outstandingRequests--;

    if( [error code] == NSURLErrorCancelled )
    {
        NSLog(@"[%@] ...webView CANCELLED loading", [self class] );
    }
    else if( [[error domain] isEqualToString:@"WebKitErrorDomain"]
    && [error code] == 204)
    {
        // no worries ... YouTube, iCal, or etc took over the page load
    }
}

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有