【问题标题】:WKWebView showing white screen, with native<->webview communicationWKWebView 显示白屏,与原生<->webview 通信
【发布时间】:2018-12-29 17:45:52
【问题描述】:

这是我的 ViewController 类中的函数和道具, webViewContainer 只是一个视图。该页面确实呈现,因为它将WEBVIEW MSG WORKING 打印到控制台,但它没有出现在视图所在的位置,或者它出现但只是白色。删除 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)
}

【问题讨论】:

    标签: ios swift webview uiview wkwebview


    【解决方案1】:

    你错过了这条线

    self.webViewContainer.addSubview(webView)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多