WKWebView, показывающий белый экран, с родной <-> веб-связью - PullRequest
0 голосов
/ 29 декабря 2018

Вот функции и реквизиты внутри моего класса ViewController, webViewContainer - это просто представление.Страница отображается, потому что печатает WEBVIEW MSG WORKING на консоль, но она не отображается там, где находится представление, или отображается только белым цветом.Удаление связи с родным веб-представлением и создание прямой ссылки из веб-представления на переменную работает, как и ожидалось, но мне нужно сохранить функциональность обмена сообщениями.

@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)
}

1 Ответ

0 голосов
/ 30 декабря 2018

Вы пропустили строку

self.webViewContainer.addSubview(webView)

Добавление ее в конец метода viewDidLoad должно исправить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...