
正文
js调不到oc方法,js运行不出来
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何在IOS平台上使用js直接调用OC方法
在jsb.reflection.callStaticMethod方法中,我们通过传入OC的类名,方法名,参数就可以直接调用OC的静态方法,并且可以获得OC方法的返回值。类 参数中的类名,只需要传入OC中的类名即可,与Java不同,类名并不需要路径。
cocos2d-js,Yes! you call a Native UI from Reflection);这里是这个方法在OC的实现,可以看到是弹出一个native的对话框。并把title和content设置成传入的参数,并返回一个boolean类型的返回值。
其次:我们要在我们的OC代码里面注册JS方法 - (void)h5callApp { //获取该UIWebview的javascript执行环境。
我们可以让js端写两个方法, 第一个方法是js端开始向oc端发起信息需求的方法名,当oc端收到该方法名的时候,就去调用js端第二个获取传值的方法,把信息传递过去。
相关问答
Q1: 那些年趟过的OC与JS交互的坑
1、导入相关头文件、设置相关代理和属性 WKWebView初始化 注意:楼主遇到的第一个坑:如果JS给OC传值为空,必须写成: postMessage(null),如果什么都不写,方法是调不通的。
2、错误的原因是: 在方法 中未实现 decisionHandler(WKNavigationActionPolicyCancel) block 的回调。代理方法中,未实现block的回调 放开上图中的注释部分就可以了。另外一个代理方法也是,需要实现block的回调,不然也会报错。
3、本篇文章给大家分享的内容是如何实现OC与JS的交互,有着一定的参考价值,有需要的朋友可以参考一下第一种:JS给OC传值,使用JavaScriptCore.framework。
4、cocos2d-js,Yes! you call a Native UI from Reflection);这里是这个方法在OC的实现,可以看到是弹出一个native的对话框。并把title和content设置成你传入的参数,并返回一个boolean类型的返回值。
5、在你的html5中config.js定义你的Plugin的名称和方法。
6、往简单了说, webviewJavaScriptBridge 的使用主要是靠 WKWebViewJavascriptBridge 来连接OC端(也即客户端)与JS端,这里我们需要配合服务端来做,规定好方法名,调用 registerHandler 和 callHandler 就可以了。
Q2: OC与JS交互-WKWebView篇
1、错误的原因是: 在方法 中未实现 decisionHandler(WKNavigationActionPolicyCancel) block 的回调。代理方法中,未实现block的回调 放开上图中的注释部分就可以了。另外一个代理方法也是,需要实现block的回调,不然也会报错。
2、name为方法名 ,和JS 中的保持一致,添加脚本,相当于给Webview添加一个监听,有这个功能来处理JS。在WKScriptMessageHandler代理方法中处理回调,实现自己的逻辑。上面就是JS调用OC原生实现。
3、UIWebView可以直接利用JavaScriptCore框架和JS交互,包括JS调用本地方法时,同步返回数据给JS。
4、往简单了说, webviewJavaScriptBridge 的使用主要是靠 WKWebViewJavascriptBridge 来连接OC端(也即客户端)与JS端,这里我们需要配合服务端来做,规定好方法名,调用 registerHandler 和 callHandler 就可以了。
5、在WKWebView白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 的时候检测 webView.title 是否为空来 reload 页面。综合以上两种方法可以解决绝大多数的白屏问题。
6、js和native的官方交互方法考虑了半天,也没发现好的方法,所以从另外一个角度出发解决同步回调的问题。
关于js调不到oc方法和js运行不出来的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







