检测WebView何时完成在Swift4中的加载?

时间:2018-07-05 16:56:59

标签: ios swift xcode wkwebview

我想在WebView加载时显示进度,并在WebView完成加载时关闭它。 我尝试了这段代码:

import UIKit
import WebKit
import SVProgressHUD
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet var WebView1: WKWebView!
@IBOutlet var WebView2: WKWebView!


let YouTubeURL = URL (string: "https://www.youtube.com/")


@IBAction func YTButtonAction(_ sender: Any) {

    let YTRequest = URLRequest(url: YouTubeURL!)
    WebView1.load(YTRequest)
    if WebView1.isLoading {
        SVProgressHUD.show()
    }
    func webViewDidFinishLoad(WebView1 : UIWebView) {

        SVProgressHUD.dismiss()

    }


}
}

但是它不起作用。 进度继续旋转。 有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

三个致命问题:

  • 您必须设置代表

    WebView1.delegate = self
    
  • 委托方法的签名错误

    func webViewDidFinishLoad(_ webView: UIWebView)
    
  • 委托方法必须在类的顶层。

我认为还有第四个致命问题:我怀疑WKWebView完全符合UIWebViewDelegate。我想您必须采用WKNavigationDelegate并实施webView(:didFinish:)

并且请遵守Swift命名约定,即变量和函数/方法名称以小写字母开头。

答案 1 :(得分:0)

答案: 我改变了

  1.   

    UIWebViewDelegate WKNavigationDelegate

  2.   

    WebView1.delegate = self WebView1。 navigationDelegate =自我   WKWebView属性的名称是navigationDelegat

  3.   

    func webViewDidFinishLoad(WebView1:UIWebView)至    func webView(_ webView:WKWebView,                didFinish导航:WKNavigation!)