I am showing the `html` file using WKWebView. This problem occurs when you open another preloaded WKWebView from the main WKWebView, sometimes after showing a white screen. And when you see the screen, it flashes.
Main.js
$(document).ready(function(){
var data = {
apiType : "preload",
parameter : encodeURI(`view/other?value="testvalue"`)
}
webkit.messageHandlers.TestApp.postMessage(data);
...
$('#openBtn').on('click', function(){
var data = {
apiType : "openOther"
}
webkit.messageHandlers.TestApp.postMessage(data);
MainWKWebViewController.swift
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
case "preload":
let parameter = message["parameter"] as! String
preload(parameter)
break
case "openOther":
openOtherScreen()
break
...
func preload(_ prameter: String){
let storyboard = UIStoryboard(name: "Main", bundle: nil)
otherWebView = storyboard.instantiateViewController(withIdentifier: "OtherWebViewController") as? OtherWebViewController
otherWebView.delegate = self
otherWebView.paramFromMain = prameter
otherWebView.loadViewIfNeeded()
otherWebView.otherWebView.navigationDelegate = self
preloadCheck = true
}
func openOtherScreen(){
if preloadCheck {
DispatchQueue.main.async {
self.navigationController?.pushViewController(self.otherWebView, animated: true)
self.preloadCheck = false
}
} else {
}
}
Has anyone solved the same problem as me?
I tried out the layoutIfNeeded() function in addition. But it's the same.
func preload(_ prameter: String){
let storyboard = UIStoryboard(name: "Main", bundle: nil)
otherWebView = storyboard.instantiateViewController(withIdentifier: "OtherWebViewController") as? OtherWebViewController
otherWebView.delegate = self
otherWebView.paramFromMain = prameter
otherWebView.view.layoutIfNeeded()
DispatchQueue.main.async {
self.otherWebView.loadViewIfNeeded()
self.otherWebView.otherWebView.navigationDelegate = self
self.preloadCheck = true
}
}
How can I solve this problem?