检测所有UIWebViews加载完成:Objective-C

时间:2016-11-16 09:57:11

标签: ios objective-c uiwebview webviewdidfinishload

正如标题中所提到的,我正在寻找检测所有UIWebViews已经完成加载的方法,同时加载HTML字符串。

我有一个自定义视图,其中有5个Web视图(1个用于提问,4个用于选项)。他们每个人都将html字符串加载为:

[queWV loadHTMLString:queHtml baseURL:nil];
[opt1WV loadHTMLString:opt1Html baseURL:nil];
[opt2WV loadHTMLString:opt2Html baseURL:nil];
[opt3WV loadHTMLString:opt3Html baseURL:nil];
[opt4WV loadHTMLString:opt4Html baseURL:nil];

我已尝试使用webViewDidFinishLoad

进行检查
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
     if(webView == opt4WV)
     {
         //All web views has finished loading
     }    
}

但实际上,根据要加载的内容,随着webViewDidFinishLoad方法调用随机Web视图的方法不正确。

有没有办法检测所有网页浏览量的加载完成情况?

谢谢!

5 个答案:

答案 0 :(得分:4)

也许我过于简单化或没有看到什么,但你是否尝试将webViewDidFinishLoad与计数器结合使用?因此,如果您有5个Web视图,请实现1到5的计数器,并计算webViewDidFinishLoad被调用的次数。当你到达5时,所有视图都被加载。

答案 1 :(得分:3)

是的,使用计数器来跟踪并确保所有Web视图委托都设置为同一个控制器

答案 2 :(得分:2)

<。>在.h文件中创建一个这样的计数器

int webViewLoadCount = 0;

然后像这样对待这个计数器

<。>在.m文件中的UIWebview委托方法

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *string = webView.request.URL.absoluteString;

    if ([string rangeOfString:queHtml]) {
        NSLog(@"queWV webview loaded with this  %@ ",queHtml);
        webViewLoadCount = webViewLoadCount + 1;
    } else if ([string rangeOfString:opt1Html]) {
        NSLog(@"opt1WV webview loaded with this  %@ ",opt1Html);
        webViewLoadCount = webViewLoadCount + 1;
    } else if ([string rangeOfString:opt2Html]) {
        NSLog(@"opt2WV webview loaded with this  %@ ",opt2Html);
        webViewLoadCount = webViewLoadCount + 1;
    }else if ([string rangeOfString:opt3Html]) {
        NSLog(@"opt3WV webview loaded with this  %@ ",opt3Html);
        webViewLoadCount = webViewLoadCount + 1;
    }else if ([string rangeOfString:opt4Html]) {
        NSLog(@"opt4WV webview loaded with this  %@ ",opt4Html);
        webViewLoadCount = webViewLoadCount + 1;
    }
}

我希望这会对你有所帮助

答案 3 :(得分:2)

可能会有所帮助

全球NSInteger counter;

viewDidLoad初始化counter = 0;

然后

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
 counter++;

 if(counter == 5)
 {
     //All web views has finished loading
     counter = 0; //again reset to 0
 }    
}

快乐的编码......

答案 4 :(得分:1)

声明变量“加载”此函数

int loaded = 0

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
     if(webView == queWV || webView == opt1WV || webView == opt2WV || webView == opt3WV || webView == opt4WV )
     {
         loaded += 1;
     }    
    
      if (loaded ==5) {
        // process
      }
}