Мне нужно обновить мой код до быстрого 3. Код ниже - это оригинальное решение, которое отлично работает, но в XCode 8 beta и iOS 10 с быстрым 3 «userContentController» 'делегат не вызывается, когда я использую оригинальный код html + js для вызова собственной стороны.WKWebView WKScriptMessageHandler не вызывается с iOS 10, XCode 8 beta
class ViewController: UIViewController, WKUIDelegate, WKScriptMessageHandler, WKNavigationDelegate,UIWebViewDelegate,CLLocationManagerDelegate,URLSessionDataDelegate,UIImagePickerControllerDelegate, UINavigationControllerDelegate {
....
func initWebView(){
// JAVASCRIPT PART
let contentController = WKUserContentController();
let jScript:String = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
let wkUScript:WKUserScript = WKUserScript(source: jScript, injectionTime: WKUserScriptInjectionTime.atDocumentEnd, forMainFrameOnly: true);
contentController.addUserScript(wkUScript)
contentController.add(
self,
name: "refreshWebPage"
)
contentController.add(
self,
name: "forceStepBack"
)
contentController.add(
self,
name: "setPageTitle"
)
contentController.add(
self,
name: "allowBackNavigate"
)
contentController.add(
self,
name: "changeBackNavigationURL"
)
contentController.add(
self,
name: "changeLeftButtonIconVisibility"
)
contentController.add(
self,
name: "changeRightButtonIconVisibility"
)
contentController.add(
self,
name: "clearWebCache"
)
contentController.add(
self,
name: "changeMobileAndPassword"
)
let config = WKWebViewConfiguration()
config.userContentController = contentController
self.webView = WKWebView(frame: CGRect.zero, configuration: config)
self.view.translatesAutoresizingMaskIntoConstraints = false
self.webView!.navigationDelegate = self
self.webView!.uiDelegate = self;
self.webView!.scrollView.bounces = false;
view = webView
webView?.loadHTMLString(self.baseURL!, baseURL: nil)
}
...
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("JavaScript is sending a message: \(message.body)")
print("JavaScript is sending a message.name: \(message.name)")
}
меня тоже, не найдя никаких решений ... ПОМОЩЬ! – Quadrivium