Ios Swift&x2B;WKWebView:如何防止访问某些URL?

Ios Swift&x2B;WKWebView:如何防止访问某些URL?,ios,swift,uiwebview,Ios,Swift,Uiwebview,我有一个控制器,它有一个WKWebView实例。但是,我希望它不要加载任何请求到雅虎。它曾经与UIWebView一起使用(下面注释掉)。我不知道如何使用WKWebView来完成它 class WebBrowserViewController: UIViewController { let webView = WKWebView() override func loadView() { super.loadView() self.view = self.webView

我有一个控制器,它有一个WKWebView实例。但是,我希望它不要加载任何请求到雅虎。它曾经与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
  }
}
扩展Web浏览器服务控制器:WKNavigationDelegate{
func webView(webView:WKWebView,decisedpolicyfornavigationaction导航操作:WKNavigationAction,decisionHandler:(WKNavigationActionPolicy)->Void){
打印(webView.URL?.absoluteString)
如果urlVideoType(webView.URL!)!=VideoUrl.Unknown{
loadVideo(webView.URL!)
decisionHandler(.Cancel)/我最终做到了:

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
  }
}
扩展Web浏览器服务控制器:WKNavigationDelegate{
func webView(webView:WKWebView,decisedpolicyfornavigationaction导航操作:WKNavigationAction,decisionHandler:(WKNavigationActionPolicy)->Void){
打印(webView.URL?.absoluteString)
如果urlVideoType(webView.URL!)!=VideoUrl.Unknown{
loadVideo(webView.URL!)

decisionHandler(.Cancel)//如果url是网页的一部分,比如加载图像,该怎么办?如果url是网页的一部分,比如加载图像,该怎么办?