此处的目标是检测webView
的URL何时更改。由于在处理WebView中的某些元素时,WKWebView类的didCommit
和didStartProvisionalNavigation
功能似乎并不总是被触发,所以我现在必须添加一个观察者来在WebView的URL值发生更改时进行拾取。无法将Obj-C观察器转换为Swift语法
到目前为止,我已经创建了自己的通知扩展与名checkURL
:
等均取得
extension Notification.Name {
static let checkURL = Notification.Name("checkURL")
}
NotificationCenter.default.post(name: .checkURL, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(getter: webView.url), name: .checkURL, object: webView.url)
Objective-C的解决方案(志愿)
// Add an observer
[webView_ addObserver:self forKeyPath:@"URL" options:NSKeyValueObservingOptionNew context:NULL];
// Method that gets called when the URL value changes
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
// Code
}
将如何我着手应用该Objective-C代码来启动一个函数只要URL值改变?我仍然试图绕过通知以及它们如何处理对象值,所以任何解释都会非常有帮助!
谢谢您的阅读!
编辑:只是为了澄清事实,我将改写我的问题:
由于didCommit
和didStartProvisionalNavigation
并不总是显得与基于JavaScript的网站工作时,以及PHP火灾(尤其是 - 你会经常看到URL被改变的符号,如#
和whatnot);然而,如前所述,内置的WKWebView函数似乎没有捕获这些函数。所以我在这里想要做的是找到一种解决方法来捕获对URL所做的任何更改,无论它是否只是一个#
等。并且最好完全保留Swift代码 - 因为我仍在学习。 :)
这是你必须effecti第三次vely问同样的问题。请你停下来。 – matt