UIWebView在点击链接后停止触发委托方法

问题描述:

我的应用程序中有一个UIWebView,用于显示本地保存的HTML内容。内容包括其唯一目的是指示应用程序显示不同文档的链接。这些链接使用自定义URL协议:“jcom://”,URL是一个JSON字符串,告诉应用程序如何找到正在链接的文档。UIWebView在点击链接后停止触发委托方法

您可能会质疑我们为什么不使用http URL来链接我们的文档。答案与手边的问题无关,而且细节不能改变,也因为理由。

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

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

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

有谁知道我可以如何将网页视图恢复到它将再次允许点击链接的状态?谢谢!

+0

是委托函数shouldStartLoadWith总是返回true? –

+0

我已经尝试过两种方法,但两种方法都没有区别。 –

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