【问题标题】:Detect all UIWebViews load finish : Objective-C检测所有 UIWebViews 加载完成:Objective-C
【发布时间】:2016-11-16 09:57:11
【问题描述】:

正如标题中提到的,我正在寻找一种方法来检测所有 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 视图调用,具体取决于要加载的内容。

有什么方法可以检测所有网页视图的加载完成吗?

谢谢!

【问题讨论】:

  • 您可以使用一些布尔变量来检测每个 webview 是否完成加载。
  • 是的,我认为我们可以在那里维护计数器或数组,但有时可能会有 3 或 6 个 webviews,具体取决于选项的数量。有没有其他可靠的方法来实现它?
  • 你能得到关于一次加载多少个网页视图的确切数字吗?
  • 到目前为止,没有。会检查的。

标签: ios objective-c uiwebview webviewdidfinishload


【解决方案1】:

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

【讨论】:

  • 是的,为此我需要跟踪加载的 webviews 数量。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    可能会有帮助

    在全球范围内采取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】:

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

      int webViewLoadCount = 0;
      

      然后像这样 trke 这个计数器

      .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;
          }
      }
      

      希望对你有帮助

      【讨论】:

        【解决方案5】:

        声明变量,“加载”出这个函数

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

        【讨论】:

          猜你喜欢
          • 2021-08-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-22
          • 1970-01-01
          相关资源
          最近更新 更多