swift - uiDelegate 方法创建未调用配置的 webview

标签 swift wkwebview wkuidelegate

我已将委托(delegate)分配给 wkwebview uiDelegate 并实现了它的方法 create web view with configuration,但它没有被调用。我什至设置了断点,但它没有命中。

 class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {

@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    webView.navigationDelegate = self
    webView.uiDelegate = self
    let requestURL = URL(string: "https://www.google.com")!
    let request = URLRequest(url: requestURL)
    webView.load(request as URLRequest)
}

func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {

    let config = WKWebViewConfiguration()
    return WKWebView(frame: webView.frame, configuration: config)
}

func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
}
}

最佳答案

似乎它没有在 webview 的初始初始化时调用委托(delegate)...我建议您只从代码创建 webview

    let configuration = WKWebViewConfiguration()
    configuration.allowsInlineMediaPlayback = true
    configuration.allowsAirPlayForMediaPlayback = true
    configuration.mediaTypesRequiringUserActionForPlayback = []

    webView = WKWebView(frame: containerView.frame, configuration: configuration)
    webView.translatesAutoresizingMaskIntoConstraints = false
    containerView.addSubview(webView)

    NSLayoutConstraint.activate([
        webView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
        webView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
        webView.topAnchor.constraint(equalTo: containerView.topAnchor),
        webView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
    ])

containerview 只是在我的 xib 中设置的一个基本 UIView 所以只需在你的 xib 中设置这个 uiview 而不是 wkwebview 就可以了

关于swift - uiDelegate 方法创建未调用配置的 webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57144195/

相关文章:

ios - 镜像已固定子节点的 SpriteKit 节点

ios - 数组元素连续追加

webkit - 同一个应用程序中的多个 WKWebView 实例可以有一个单独的 cookie 存储吗?

macos - 如何阻止 WKWebView 创建过多进程?

webview - Window.open() 在 WKWebView 中不起作用

ios - 背景 block 粒子效果

swift - Vapor 主线程不起作用

ios - 加载 webview 时加载动画卡住/卡住

swift - 在 Swift 中将 cookie 添加到 webview.load