OC与JS的交互

169 阅读1分钟

在实际的项目开发中,我们经常会遇到和JS界面交互的情况,我们来一起探索一下OC与JS交互的常用方法。

方法一:拦截URL (JS调用OC)

通过这个图片可以看出,点击提交按钮会触发submit的方法,调用loadurl对应的事件,如果这时候我们需要对对应的一个事件进行处理,就需要在wkwebView的代理方法中进行处理,如下图所示 通过对该方法的数据进行解析,同时获取对应的参数,在iOS端进行对应的处理,如调用系统方法等。

如果我们需要使用OC调用对应的JS,则需要在wk的finish方法中调用evaluateJavaScript,如下图所示 由结果可图一的js代码可以看出通过该代码的调用我们成功的传入参数进入js代码中。

方法二:WKScriptMessageHandler

该方法的使用,需要我们进行对应的方法注册,同时在我们的JS代码中做对应的调整,如下图所示: 箭头所示就是我们注册的方法名称,该方法需要和js中对应的使用保持一致。然后进行对应的代理方法的实现,根据对应的消息名称(红箭头标示即为名称)做iOS端对应的响应时间。 该方法使用时需要注意,由于在消息的注册阶段存在self - webView - configuration - userContentController - self的循环引用存在,所以需要我们在使用结束后进行对应的remove操作,如下图