gpt4 book ai didi

ios - WKWebView 显示白屏,使用原生 <-> webview 通信

转载 作者:搜寻专家 更新时间:2023-11-01 06:26:22 27 4
gpt4 key购买 nike

这是我的 ViewController 类中的函数和 Prop ,webViewContainer 只是一个 View 。该页面确实呈现,因为它打印 WEBVIEW MSG WORKING 到控制台,但它没有出现在 View 所在的位置,或者它出现但只是白色。删除 native webview 通信并从 WebView 直接引用变量按预期工作,但我需要保留消息传递功能。

@IBOutlet weak var webViewContainer: UIView!
var webView: WKWebView!

override func viewDidLoad() {
super.viewDidLoad()

let contentController = WKUserContentController()
contentController.add(self, name: "callback")

let config = WKWebViewConfiguration()
config.userContentController = contentController
print(webViewContainer.frame);

webView = WKWebView(frame: webViewContainer.frame, configuration: config);

webView.loadHTMLString("<html><body><script>try {webkit.messageHandlers.callback.postMessage('WEBVIEW MSG WORKING');} catch(err) {console.log('Can not reach native code');}</script><h1>WEBVIEW SHOWS</h1></body></html>", baseURL: URL(string: "http://localhost"));
}

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
guard let response = message.body as? String else { return }
print(response)
}

最佳答案

你错过了这条线

self.webViewContainer.addSubview(webView)

将它添加到 viewDidLoad 方法的末尾应该可以解决您的问题。

关于ios - WKWebView 显示白屏,使用原生 <-> webview 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53971929/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com