【问题标题】:UIWebview shouldStartLoadWithRequest delegate method gets called only once (inconsistent)UIWebview shouldStartLoadWithRequest 委托方法只被调用一次(不一致)
【发布时间】:2016-01-29 12:50:01
【问题描述】:

我正在将带有一些 js 代码的本地 html 模板加载到 webview 中。它大部分时间都有效。但有时,shouldStartLoadWithRequest 代表会被调用一次,以后根本不会被调用。顺便说一句,我在 iOS 9.1 及更高版本中更一致地看到了这个问题。

每当出现此问题时,如果我重新创建 webview 并加载相同的内容,则它可以正常工作。所以,我想知道为什么它第一次不起作用(不一致)但第二次起作用。

我在打电话

[_webView setDelegate:nil]; 
//and 
[_webView stopLoading]; in dealloc method.

如果有人可以提出建议,将会很有帮助。

【问题讨论】:

标签: ios objective-c uiwebview


【解决方案1】:

我认为您的 webView 在某个地方失去了它的委托。所以它可能只是在代码中的某个地方用另一个重置它,或者只是用 nil 播种。查看您发布的代码,我可以预测这种情况 - 两个实例引用了这个 webView。一个实例应该删除并且它正在调用 dealloc 方法 - webView 委托设置为 nil,但其他实例仍在使用同一个 webView,但现在它有委托 nil。由于 delegate 为 nil,webView 不会向他发送任何消息。这只是我的预测,您仍然应该检查您的代表是否为零,然后开始新的问题研究。祝你好运。

【讨论】:

  • 嗨,谢谢。我已经检查了委托,并且在 js 执行期间没有被设置为 nil 。另外,我一次只使用一个实例。每次都会创建一个新的 webview 实例来执行..
  • 您也可以通过将任何输出字符串添加到 shouldStartLoadWithRequest 方法来简单地检查它 - 如果任何内容将输出到控制台而不是委托正确响应并且您现在只有无响应实例(响应的实例可能在某处否则甚至失去参考)
猜你喜欢
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 2013-11-16
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多