(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
原创粉丝点击