一开始以为是移动端中注入的方法 和 js方法名不对。经排查,是一致的。
然后排查 注入方法(通过 - (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler注入)也没有任何问题。
后来发现前端是使用的vue框架,而直接将js方法写在 methods 中,这样造成这个交互js方法是局部的,无法被ios端找到。
解决办法:将iOS需要调用的js方法在 created 和 mounted 方法中暴露在window下,变成全局方法。
window.printText = this.printText()
如果到这里还不行或者有崩溃,请在 window.onload 方法下进行声明
定义Vue全局方法。
main.js中定义:Vue.prototype.myfunction = function() {/*你的自定义Vue方法*/}
子组件调用:this.myfunction()
定义Window对象全局方法。
在main.js中定义:window.myfunction = function() {/*你的自定义函数*/}
子组件调用:myfunction()