【问题标题】:UIWebView stops firing delegate methods after link is tapped点击链接后,UIWebView 停止触发委托方法
【发布时间】:2017-07-02 02:37:55
【问题描述】:

我的应用中有一个 UIWebView,用于显示本地保存的 HTML 内容。内容包括链接,其唯一目的是引导应用程序显示不同的文档。这些链接使用自定义 URL 协议:“jcom://”,URL 是一个 JSON 字符串,用于告诉应用如何找到被链接的文档。

您可能会质疑为什么我们不只使用 http URL 来链接我们的文档。这个问题的答案与手头的问题并不真正相关,而且这个细节也不能改变,因为原因也是如此。

当点击其中一个链接时,我们使用UIWebViewDelegate 方法webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool。然后我们可以解码 JSON 负载并加载正确的页面。

当链接未引用有效文档时,就会出现问题。在这种情况下,我们希望用户能够点击同一页面上的不同链接。但是在处理了我们的一个 jcom:// 链接后,当链接被点击时,UIWebView 停止向我们发送委托方法。

我尝试为该方案实现 URLProtocol 处理程序,但这所做的只是阻止 UIWebView 在点击链接时生成加载失败。一旦点击了单个链接,它的方法也不会被调用。

有谁知道如何将网络视图恢复到允许点击链接的状态?谢谢!

【问题讨论】:

  • 委托函数 shouldStartLoadWith 是否总是返回 true?
  • 两种方法我都试过了,都没有什么不同。

标签: ios swift ipad uiwebview


【解决方案1】:

我最终屈服于必然性,只是重新加载了页面。这不是一个理想的解决方案,但在这种特殊情况下是可行的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多