代码之家  ›  专栏  ›  技术社区  ›  Dan Ray

UIWebView完成得太快

  •  4
  • Dan Ray  · 技术社区  · 15 年前

    我正在将一个更大(javascript也很重)的页面加载到UIWebView中,我想添加一个UIActivityView,让它在思考时旋转。

    问题是,我的 - (void)webViewDidFinishLoad:(UIWebView *)webView 方法在渲染实际发生之前很长一段时间被调用。足够让我的微调器(设置为停止时隐藏)永远不会出现。当UI组装完成时,微调器已经被停止并隐藏,尽管在UIWebView将商品真正放到屏幕之前,有足够的时间怀疑它是否已经损坏。

    我希望有一个“webViewDidFinishRendering”,但这意味着WebKit不是什么利克迪分裂快…;-)

    2 回复  |  直到 15 年前
        1
  •  4
  •   cduhn    15 年前

    下面是我如何处理需要确保页面已完全加载的情况:为document.onload事件添加一个javascript事件处理程序,该事件执行以下操作:

    function onDocumentLoad() {
         window.location.href = 'myapp://loaded';
    }
    

    然后在UIWebViewDelegate中,可以执行以下操作:

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
        if ([[request.URL absoluteString] isEqual:@"myapp://loaded"]) {
            [activityIndicator stopAnimating];
            return NO;
        }
        return YES;
    }
    
        2
  •  0
  •   Tom Harrington    15 年前