我使用WKWebView加载我的网页。当用户点击网页中的按钮时,我的网页将打开一个自定义的schema URL(例如asfle://download?media_id=1)。我使用KVO观察WKWebView的URL属性以获得URL。它在iOS 9中运行良好,但在iOS 10中不起作用。我无法获得URL。我使用Xcode 8,swift 2.3。
override func viewDidLoad() {
super.viewDidLoad()
webView.addObserver(self, forKeyPath: "URL", options: .New, context: nil)
}
override func observeValueForKeyPath(keyPath: String?,
ofObject object: AnyObject?,
change: [String : AnyObject]?,
context: UnsafeMutablePointer<Void>)
{
print("url:\(webView.URL)")
}
在iOS 9中,它可以打印网址。但在iOS 10中,只有网站的网址得到打印,当用户触摸网页中的按钮,没有得到打印。
3条答案
按热度按时间vhipe2zx1#
您仍然可以观察
WKWebView
的url
属性,只是要确保对返回的观察进行强引用:此外,如果您计划在观察闭合中使用
self
,请不要忘记将其捕获为weak
,否则您将获得一个保留周期。0kjbasz62#
我找到了解决方案。不使用KVO,而是使用delegate来检测打开的URL。
zdwk9cvp3#
我找到了可选的解决方案。我遇到了同样的问题,并更改了此行