I need to upgrade my code to fast 3. The code below is an original solution that works fine, but in Xcode 8 beta and iOS 10 with fast 3, the userContentController delegate is not called when I use the original html + js to call my own side.
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)") }
source share