我有一个包含 WKWebView 实例的 Controller 。但是,我希望它不向 Yahoo 加载任何请求。它曾经与 UIWebView 一起工作(下面已注释掉)。我不知道如何使用 WKWebView 来做到这一点。
class WebBrowserViewController: UIViewController {
let webView = WKWebView()
override func loadView() {
super.loadView()
self.view = self.webView
}
override func viewDidLoad() {
webView.navigationDelegate = self
let url = NSURL(string: "https://www.google.com")!
let request = NSURLRequest(URL: url)
webView.loadRequest(request)
}
}
extension WebBrowserViewController: WKNavigationDelegate {
func webView(webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
// this prints the right thing, but it doesn't allow me to stop the request
print(webView.URL?.absoluteString)
}
}
// WHAT I USED TO HAVE:
//extension WebBrowserViewController: UIWebViewDelegate {
// func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
//
// if visitingYahoo(request.URL?.absoluteString) {
// return false
// } else {
// return true
// }
// }
//}
最佳答案
我最终这样做了:
extension WebBrowserViewController: WKNavigationDelegate {
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
print(webView.URL?.absoluteString)
if urlVideoType(webView.URL!) != VideoUrl.Unknown {
loadVideo(webView.URL!)
decisionHandler(.Cancel) //<------------------ this part
}
decisionHandler(.Allow) //<------------------ this part
}
}
关于ios - swift + WKWebView : How to prevent visits to certain URLs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37379146/