OC和JS代码的互调

Html决定网页的内容,css决定网页的样式,js决定网页的事件

01 OC调用JS的代码 
    NSString *str = [self.webView stringByEvaluatingJavaScriptFromString:@"sum()"];

02 JS怎么调用OC的说明 
    新的需求:点击按钮的时候拨打电话
    但是我在点击按钮的时候,用户是不知道的,我们怎么能够知道用户点击了网页上面的一个按钮,只能通过一个技巧,那就是自己搞一个特定的协议头比如说xmg://,当我拦截到你的网络请求的时候,只需要判断一下当前的协议头是不是这个就能判断你现在是否是JS调用。 OC里面有通过字符串生成SEL类型的方法,所以当拿到数据之后做下面的事情 
          1)截取方法的名称 
          2)将截取出来的字符串转换为SEL 
          3)利用performSelect方法来调用SEL

03 涉及到的相关方法
       [@"abc" hasPrefix:@"A"] //判断字符串是否以一个固定的字符开头,这里为A 
      //截串操作 
      - (NSString *)substringFromIndex:(NSUInteger)from; 
      //切割字符串,返回一个数组 
      - (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator;
      //替换操作 
      - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
      //把string包装成SEL 
      SEL selector = NSSelectorFromString(sel);

04 如何屏蔽警告 
    #pragma clang diagnostic push 
    #pragma clang diagnostic ignored "-Warc-performSelector-leaks" 
        //-Warc-performSelector-leaks为唯一的警告标识
        [self performSelector:selector withObject:nil]; 
    #pragma clang diagnostic pop
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 10,988评论 0 106
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    前端进阶之旅阅读 115,166评论 24 450
  • 刚才翻看了大家的评论,十条有七条是在鄙视百科全书型人才的,我不经怀疑大家是否有对这个类型的人才有过思考,就很随意的...
    梦游世界阅读 2,481评论 0 1
  • 将一个UIView显示在最前面只需要调用其父视图的 bringSubviewToFront()方法。将一个UIVi...
    Happy晓哥阅读 5,853评论 0 51