Ios WKWebView中的webViewDidFinishLoad

Ios WKWebView中的webViewDidFinishLoad,ios,swift,webview,uiwebview,wkwebview,Ios,Swift,Webview,Uiwebview,Wkwebview,我必须从UIWebView迁移到WKWebView,我遇到了一些问题。“WKWebView”似乎没有成员“请求”。有没有办法使用WKWebView来处理这种情况?我只需要加载URL,如果它包含“.pdf”,只需显示一个按钮 func webViewDidFinishLoad(_ webView : WKWebView) { UIApplication.shared.isNetworkActivityIndicatorVisible = false if (webView.req

我必须从UIWebView迁移到WKWebView,我遇到了一些问题。“WKWebView”似乎没有成员“请求”。有没有办法使用WKWebView来处理这种情况?我只需要加载URL,如果它包含“.pdf”,只需显示一个按钮

func webViewDidFinishLoad(_ webView : WKWebView) {
    UIApplication.shared.isNetworkActivityIndicatorVisible = false

    if (webView.request?.url!.absoluteString)!.range(of: ".pdf") != nil {
        pdfBackButton.isHidden = false
    }
    else {
    pdfBackButton.isHidden = true}

}
您可以实现该功能

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    UIApplication.shared.isNetworkActivityIndicatorVisible = false
    let url = webView.url

    if url?.absoluteString.range(of: ".pdf") != nil {
        pdfBackButton.isHidden = false
    }
    else {
        pdfBackButton.isHidden = true
    }
}
“WebKit”
框架添加到类中

override func viewDidLoad() {
     super.viewDidLoad()
     let myWebView:WKWebView = WKWebView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))
     myWebView.navigationDelegate = self;
     let url = URL(string: "https://www.Apple.com")!
     myWebView.load(URLRequest(url: url))
     self.view.addSubview(myWebView)
}
然后实现
WKNavigationDelegate
方法

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    UIApplication.shared.isNetworkActivityIndicatorVisible = false
    let url = webView.url
    print(url as Any) // this will print url address as option field
    if url?.absoluteString.range(of: ".pdf") != nil {
         pdfBackButton.isHidden = false
         print("PDF contain")
    }
    else {
         pdfBackButton.isHidden = true
         print("No PDF Contain")        
    } 
}

希望这对你有帮助

请尝试
webView.url
此处的更多信息:@toddg不幸的是,这还不够,如果我想通过执行print(webView.url)来打印当前url,它将不起作用…感谢您的帮助,但不幸的是它不起作用。。。我在url声明之后添加了一个简单的“print(url!)”,但是当前加载的url从来没有在控制台中打印过,所以我猜这个方法从来没有被调用过。。。有什么想法吗?你设置了WKWebView代理了吗?@toddg我想我在这方面确实有问题。当我在“viewDidLoad”方法中设置“webView.navigationDelegate=self”时,我的应用程序在启动时崩溃。。。我已经创建了另一个关于委托的问题:)如果我把这行“myWebView.navigationDelegate=self”放进去,应用程序在启动时会立即崩溃。我已经读到,再也不可能在WKWebView中使用它了。。。。这可能是问题所在吗?如果我在没有那行代码的情况下使用你的代码,我可以运行它,但我也会遇到同样的问题:函数didfish看起来好像从未被调用过。事实上,我没有看到加载的URL…我已经尝试过这个,它工作得很好。。!看起来你遗漏了什么…给我发送崩溃报告或日志,以便我可以分析它,帮助你解决问题@欧内斯托卡塔尼奥我也有同样的问题,但我发现了。我使用故事板插入了UIView,但忘了删除它,而是重新插入了WKWebView。一旦我这样做了,上面的代码就像冠军一样工作。