【问题标题】:ios - UIWebView DidFinishLoad not being calledios - UIWebView DidFinishLoad 未被调用
【发布时间】:2013-04-04 20:16:28
【问题描述】:

我有一个工作正常的UIWebView。代表正在工作。当我打开一个 URL 时,会触发事件 shouldStartLoadWithRequestwebViewDidFinishLoad

但是,例如,当我点击 Google 搜索结果时,只会触发 shouldStartLoadWithRequest,而永远不会调用 webViewDidFinishLoad

这会导致问题,因为如果我在 shouldStartLoadWithRequest 上放置“正在加载...”指示符,在这些情况下,即使页面正确加载,指示符仍然存在。

知道为什么会这样吗?

【问题讨论】:

  • 将委托设置为您的网络视图

标签: iphone ios objective-c uiwebview uiwebviewdelegate


【解决方案1】:

这个问题通常在 ipad 应用程序中发现....但是您可以使用 [self performselector:afterdelay] 来解决您的问题,您必须使用 [m_pWebview loaded] 在选择器方法中检查 webview 是否已加载;并根据该执行指标停止....这不是正确的解决方案,但它可以工作.......

【讨论】:

    【解决方案2】:

    不是 Google API 专家,但我怀疑这可能是您的 reason

    【讨论】:

      【解决方案3】:

      点击搜索时,navigationType 为 UIWebViewNavigationTypeFormSubmitted。所以在这种情况下,返回类型应该是 YES。如果不是,则不会触发 webViewDidFinishLoad 方法。

      - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
      {
          NSLog(@"shouldStartLoadWithRequest");
      
          if ( navigationType == UIWebViewNavigationTypeLinkClicked ){
              NSLog(@"UIWebViewNavigationTypeLinkClicked");
      
              return YES;
          } 
          if (navigationType ==UIWebViewNavigationTypeFormSubmitted ) {
              NSLog(@"UIWebViewNavigationTypeFormSubmitted");
              return YES;
          }
          if (navigationType ==UIWebViewNavigationTypeBackForward) {
              NSLog(@"UIWebViewNavigationTypeBackForward");
              return YES;
          }
          if (navigationType ==UIWebViewNavigationTypeFormResubmitted) {
              NSLog(@"UIWebViewNavigationTypeFormResubmitted");
              return YES;
          }
          if (navigationType ==UIWebViewNavigationTypeReload) {
              NSLog(@"UIWebViewNavigationTypeReload");
              return YES;
          }
      
      
      
          return YES;
      }
      

      【讨论】:

        【解决方案4】:

        在.h文件中添加<UIWebViewDelegate>

        在 .m 中:

        yourWebview=[[UIWebView alloc]init];
        yourWebview.delegate=self;
        

        【讨论】:

        • @Thedude:我知道。但他没有发布任何代码。所以我只能猜测可能性。以上似乎是最好的可能性。
        猜你喜欢
        • 1970-01-01
        • 2011-08-27
        • 2012-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-05
        相关资源
        最近更新 更多