【发布时间】: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?
-
两种方法我都试过了,都没有什么不同。