调用webView加载页面暂时先不说这边只讲方法之间的交互
1.JS调OC的方法
首先在父类中导入JS框架,创建webView,遵守协议方法
![](https://img.haomeiwen.com/i1903794/408cadc909764999.png)
![](https://img.haomeiwen.com/i1903794/ed06f0a4154a7d27.png)
问题来了,就是怎么让JS中知道传过来的app中有什么方法呢
![](https://img.haomeiwen.com/i1903794/df3b3e64625c6245.png)
定义一个协议,继承JSExport,JSExport也是一个协议,但是什么东西都没有,这里我也不明白为啥继承了它就能调到方法了!(至于这里的方法命和作用,我们是用马克飞象写一个文档给前端)
注意:这里协议中方法的写法是很讲究的哦!
![](https://img.haomeiwen.com/i1903794/96bfe2aa06437c5d.png)
看图说话:
1.没参数没返回值的方法:直接用OC的写法
2.没参数但是有返回值的方法:直接用OC的写法
3.有返回值的方法:以下图中的写法
PropertyName:JS中调用带参数方法的名字
Selector:OC的方法全名
![](https://img.haomeiwen.com/i1903794/2bf652317c18e817.png)
下图是JS中调用OC对应有参数的方法
![](https://img.haomeiwen.com/i1903794/afc478b3277f63cd.png)
这样只要在.m中写下方法实现就可以了,下面是截图的.h和.m的截图代码
![](https://img.haomeiwen.com/i1903794/72b81ba5449a4c03.png)
![](https://img.haomeiwen.com/i1903794/1074582fb90cd229.png)
2.OC调JS的方法
比如在封装webView类的子类中创建了一个button:
![](https://img.haomeiwen.com/i1903794/2627d4fc478ee44e.png)
实现button的点击方法中调用JS的show()方法
![](https://img.haomeiwen.com/i1903794/48c21183f605598c.png)
对比下JS这边的代码就知道
![](https://img.haomeiwen.com/i1903794/04e53d125718b423.png)
调用JS方法,运行结果:
![](https://img.haomeiwen.com/i1903794/f2d7e2cd744c9f44.png)
这里只是个例子,其实最后这个OC调 JS的方法也封装在父类中,到时候子类直接调就可以了。以上仅供参考还有更多不同情况根据需求处理
(更新中...)
网友评论