(swift)我只要一个功能 --在uiwebview中的html按钮能够通过JS跳转到原生的Uiview中
来源:互联网 发布:照相馆美工的工作内容 编辑:程序博客网 时间:2024/05/17 14:28
第一步copy代码到你的uiwebview所在的viewcontrol中,
@objc protocol JavaScriptSwiftDelegate: JSExport { func chatWithExpert(dict: [String: AnyObject]);}@objc class JSObjCModel: NSObject, JavaScriptSwiftDelegate { weak var controller: UIViewController? weak var jsContext: JSContext? func chatWithExpert(dict: [String: AnyObject]){ print(dict["imId"] as! String) let chatRoom : ChatController = ChatController(conversationChatter: dict["imId"] as! String, conversationType: EMConversationTypeChat) let user : IMUserEntity = IMUserEntity() user.nickName = dict["name"] as? String user.username = dict["imId"] as? String user.userPic = dict["image"] as? String IMUserManager.shareUserManager.updateUserInformationInBackground(user) chatRoom.hidesBottomBarWhenPushed = true dispatch_async(dispatch_get_main_queue()) { () -> Void in self.controller!.navigationController?.pushViewController(chatRoom, animated: true) } }}
第二步 注入就是让两者关联起来
self.jsContext = webView.valueForKeyPath("documentView.webView.mainFrame.javaScriptContext") as? JSContext let model = JSObjCModel() model.controller = self model.jsContext = self.jsContext // 这一步是将SwiftJavaScriptModel模型注入到JS中,在JS就可以通过WebViewJavascriptBridge调用我们暴露的方法了。// self.jsContext!.setObject(model, forKeyedSubscript: "SwiftWebViewBridge") // 这一步是将SwiftJavaScriptModel模型注入到JS中,在JS就可以通过WebViewJavascriptBridge调用我们暴露的方法了。 self.jsContext.setObject(model, forKeyedSubscript: "SwiftWebViewBridge") self.jsContext!.exceptionHandler = { (context, exception) in print("exception:", exception) }```
第三步:可能出现的bug
我调入的坑:协议中方法的参数问题,如果是舞参数很ok,一个参数也还行,如果是两个即以上的建议使用字典。
chatWithExpert()
chatWithExpert(test:String)
chatWithExpert(dict: [String: AnyObject])
其他的自行研究吧
如果一定传两个,注意js中方法名和swif中语法名称的不一致性
大致是js:chatWithExpert(test:String,msg:String)
swift: chatWithExpert*Msg*(test:String,msg:String)
0 0
- (swift)我只要一个功能 --在uiwebview中的html按钮能够通过JS跳转到原生的Uiview中
- Android如何在app中通过一个按钮直接跳转到的系统的权限设置页面
- Android如何在app中通过一个按钮直接跳转到的系统的权限设置页面
- ssm框架下:在已有页面中通过按钮跳转到一个新页面
- fragmentTabHost中点击一个fragment中的按钮,跳转到另外一个fragment的解决办法
- fragmentTabHost中点击一个fragment中的按钮,跳转到另外一个fragment的解决办法
- 一个B.js获取另一个A.js的方法,只要将在html页面中的载入顺序将A.js放在B.js前即可
- html js点击按钮滚动跳转定位到页面指定位置(DIV)的方法代码
- js通过点击一个按钮跳转到一个查询页面--window.showModalDialog
- 在jsp中按钮实现界面跳转的功能
- 如何实现在当前jsp页面中通过点击按钮来跳转到上一个次访问的页面
- 通过一个按钮删除我在ListCtrl中选的一项
- html中的a标签用js来实现页面跳转的功能(php分页时做的页面跳转)
- 在SWT中,如何点击一个按钮跳转到另外一个窗口?监听事件如何编写?
- 在程序中点击一个按钮,会跳转到app store的评论页,是访问哪个链接?
- html点击一个按钮,跳转到当前页面的另一个指定位置!
- 在页面中,我们经常看到,一个button按钮,如果属标点击,就会触发一个窗口的显示,如果二次点击并可以隐藏,那么如何通过JAVA配合html来实现这一功能呢?
- fragment中的一个按钮跳转到另外一个Fragment解决方案
- 浅谈MVP架构的实现方式(架构思想)
- 5-2 一元多项式的乘法与加法运算
- 富文本带属性的字符串NSMutableAttributedString
- iOS内存管理
- 将Ubuntu终端的输出信息保存到log中
- (swift)我只要一个功能 --在uiwebview中的html按钮能够通过JS跳转到原生的Uiview中
- xposed的简单使用
- java初级第14天总结笔记
- 域名、IP地址、URL关系
- input标签file类型,选择多个文件进行上传
- [Scoi2016]背单词
- web开发常见故障处理(四)之SSH配置
- Tesseract:训练
- java初级第15天总结笔记