1

我目前正在使用 WKWebView 编写一个 Web 视图应用程序,当加载页面时没有互联网连接时,它应该显示一个自定义错误页面。我试图通过调用 WKNavigationDelegate 的方法来处理这个问题,但它从未被调用过。我是 Swift 新手,我已经尝试了一些在 stackoverflow 上找到的解决方案,但没有一个对我有用。难道我做错了什么?

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {

    var webView: WKWebView!
    
    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        webView.navigationDelegate = self
        view = webView
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        let myURL = URL(string:"https://google.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }

    func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError)
    {
        let url = Bundle.main.url(forResource: "no_connection", withExtension: "html")!
        webView.loadFileURL(url, allowingReadAccessTo: url)
        let request = URLRequest(url: url)
        webView.load(request)
    }
}
4

1 回答 1

1

签名func(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) { }不正确。
试试吧func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { }
甚至应该有一个警告,告诉你第一个签名你没有使用委托函数:
在此处输入图像描述

于 2021-09-08T13:15:29.990 回答