【问题标题】:webViewDidFinishLoad: Firing too soon?webViewDidFinishLoad:触发太快了?
【发布时间】:2010-11-28 04:09:12
【问题描述】:

我正在尝试通过在加载页面时隐藏 webView 在加载不同网页之间进行转换。但是,我看到一些图像密集型网站导致 webViewDidFinishLoading 过早触发,当我在那时显示 webView 时,您会在一瞬间看到上一页的视图。有关如何解决此问题的任何想法?

【问题讨论】:

  • 也遇到过这种情况。当事件已经触发时,Javascript 还没有真正准备好:/
  • 我也一直在努力解决这个问题,并且怀疑虽然所有内容都已加载,但页面可能尚未呈现。所以你会在一瞬间看到旧页面。就我而言,没有 Javascript,但有大量的 CSS 和大量的 HMTL。

标签: iphone


【解决方案1】:

如果页面上有 Javascript,您可能需要等待它完成。最简单的方法似乎是将一些javascript发送到要执行的页面:

-(void) webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *javaScript = @"<script type=\"text/javascript\">function myFunction(){return 1+1;}</script>";
    [webView stringByEvaluatingJavaScriptFromString:javaScript];

  // done here
}

话虽如此,我似乎仍然看到 webview 在 webViewDidFinishLoad 中没有完全更新的情况。

【讨论】:

  • 这是个坏例子
【解决方案2】:

我也遇到过这个问题。虽然我还没有找到解决方案,但我已经通过在调用 webViewDidFinishLoading 委托方法后在显示 UIWebView 之前引入 0.5 秒的延迟来解决该问题。

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [self performSelector:@selector(displayWebView) withObject:nil afterDelay:0.5];
}

【讨论】:

  • 这里靠时机不好
猜你喜欢
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多