【发布时间】:2016-09-08 10:06:48
【问题描述】:
我需要将我的代码更新为 swift 3。下面的代码是完美运行的原始解决方案,但在 Xcode 8 beta 和带有 swift 3 的 iOS 10 中,当我使用原始 html 时不会调用 userContentController 委托+js 代码调用原生端。
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)")
}
【问题讨论】:
-
我也是,没有找到任何解决方案...帮助!