class WebVIEwVIEwController: UIVIEwController,WKScriptMessageHandler{ var webVIEw = WKWebVIEw() overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() self.vIEw.backgroundcolor = UIcolor.white self.navigationItem.Title = "webVIEw详情" self.configUI() } //加载UI func configUI(){ let configuration = WKWebVIEwConfiguration.init() let userContentController = WKUserContentController.init() //设置网页与原生交互的参数 userContentController.add(self,name: "Share")//通讯录 userContentController.add(self,name: "Camera")//相机 userContentController.add(self,name: "Test")//测试 configuration.userContentController = userContentController let preferences = WKPreferences.init() /** 阻止 Js 自动调动window.open方法打开一个新的webVIEw; 会对Js 的window.open("../index.HTML");产生影响,Js 调用window.open打开新窗口的时候 WKWebVIEw 会调用WKUIDelegate的代理方法createWebVIEwWithConfiguration,如果这个代理没实现,设置了JavaScriptCanopenwindowsautomatically = YES 也没什么用 */ preferences.JavaScriptCanopenwindowsautomatically = true preferences.minimumFontSize = 40.0 configuration.preferences = preferences self.webVIEw = WKWebVIEw.init(frame: self.vIEw.frame,configuration: configuration);//设置webvIEw // self.webVIEw.uIDelegate = self // 设置代理 self.webVIEw.load(URLRequest.init(url: URL.init(string: "http://192.168.0.206:9626/WKWebVIEwMessageHandler.HTML")!))//加载网页 self.vIEw.addSubvIEw(self.webVIEw)//添加父视图 } // func webVIEw(_ webVIEw: WKWebVIEw,runJavaScriptAlertPanelWithMessage message: String,initiatedByFrame frame: WKFrameInfo,completionHandler: @escaPing () -> VoID) {// // } overrIDe func dIDReceiveMemoryWarning() { super.dIDReceiveMemoryWarning() } //WKScriptMessageHandler的协议方法:Js调用OC时会执行此方法 // userContentController webvIEw中配置的userContentController 信息 // @param message Js执行传递的消息 func userContentController(_ userContentController: WKUserContentController,dIDReceive message: WKScriptMessage) { // print(message.body)//网页传给原生的内容// print(message.frameInfo.request.url!)//请求网页的地址// print(message.name)//网页与原生定义的同一字段根据不同的字段处理不同的事件 switch message.name { case "Test": print("测试") self.webVIEw.evaluateJavaScript("testResult('\(message.frameInfo.request.url!)')",completionHandler: { (res,err) in }) case "Share": print("选择通讯录") case "Camera": print("选择相册") default: break } }}总结
以上是内存溢出为你收集整理的Swift - 简单的原生与网页交互全部内容,希望文章能够帮你解决Swift - 简单的原生与网页交互所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)