Swift 未调用WKNavigationDelegate方法

Swift 未调用WKNavigationDelegate方法,swift,wkwebview,swift4.2,Swift,Wkwebview,Swift4.2,我正试图用webview编写一个控制器,我需要WKNavigationDelegate方法,问题是这些方法根本没有被执行 这是我的控制器: import UIKit import WebKit public class WebViewController: UIViewController { private let webView: WKWebView = WKWebView() override public func viewDidLoad() { s

我正试图用webview编写一个控制器,我需要WKNavigationDelegate方法,问题是这些方法根本没有被执行

这是我的控制器:

import UIKit
import WebKit

public class WebViewController: UIViewController {

    private let webView: WKWebView = WKWebView()

    override public func viewDidLoad() {
        super.viewDidLoad()

        webView.navigationDelegate = self
        webView.isUserInteractionEnabled = true

        view = webView
    }
}

extension WebViewController: WKNavigationDelegate {
    private func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
        debugPrint("didCommit")
    }

    private func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        debugPrint("didFinish")
    }

    private func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        debugPrint("didFail")
    }
}

正在使用容器视图将此控制器添加到俯视图控制器,并且webview会正确加载网站。有没有人遇到过类似的问题,或者知道我是否做错了什么

看起来您正在使用
WKWebViewDelegate
方法添加
private
,删除类似的方法,它就会起作用

extension ViewController: WKNavigationDelegate {
 func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
    debugPrint("didCommit")
}

 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    debugPrint("didFinish")
}

 func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
    debugPrint("didFail")
}
}
试试看,也别忘了在WebView或任何你想加载的地方加载URL。

你试过在每个方法中添加断点吗?@Shabirjan是的,这就是我测试itOk的方式只是一个提示,尝试从每个
委托
方法中删除
private
,然后重试。这不起作用,我正在正确加载url。我创建了演示项目,这些委托方法都被激发。公开可见性是必要的,愚蠢的错误。感谢明确标记这些代理
Public
不是必需的。您确定吗?你试过了吗?我在没有使用公共修饰符的情况下进行了测试,但它不起作用,XCode还显示了以下消息:“实例方法‘webView(uxIdCommit:)’几乎符合可选要求…”