2016-11-22 31 views
1

我必須從UIWebView遷移到WKWebView,我遇到了一些麻煩。它看起來像「WKWebView」沒有成員'請求'。有沒有辦法使用WKWebView來處理這種情況?我只需要加載網址,然後如果它包含「.pdf」,只需顯示一個按鈕即可。webViewDidFinishLoad在WKWebView

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

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

} 
+0

嘗試'webView.url'在這裏更多信息:http://stackoverflow.com/questions/26342546/wkwebview-full-url – toddg

+0

@toddg不幸的是,這是不夠的,如果我想通過打印打印當前的URL (webView.url)它does not工作... – ernestocattaneo

回答

2

您可以實現WKNavigationDelegatewebView(_:didFinish:)功能。

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 
    } 
} 
+0

感謝您的幫助,但不幸的是它不工作...我聲明的URL後添加了一個簡單的「打印(URL!)」,但當前的URL加載從來沒有打印在控制檯中,所以我想這種方法從來沒有被稱爲...任何想法呢? – ernestocattaneo

+0

您是否設置了WKWebView委託? – toddg

+0

@託德我真的有這個問題,我猜。當我在「viewDidLoad」方法中設置「webView.navigationDelegate = self」,然後我的應用程序在啓動時崩潰... – ernestocattaneo

1

"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")   
    } 
} 

希望這將幫助你!

+0

如果我把這一行「myWebView.navigationDelegate = self;」應用程序在啓動時立即崩潰。我讀過這是不可能的,用WKWebView ....這可能是這個問題嗎?如果我沒有使用你的代碼,我可以運行它,但我有同樣的問題:函數didFinish看起來像它永遠不會被調用。事實上,我沒有看到加載的網址.... – ernestocattaneo

+0

我試過這個,它工作正常..!看起來像你錯過了東西.. –

+0

發送給我崩潰報告或日誌,以便我可以分析它幫助你解決問題...! –