iOS开发之用javascript调用oc方法而非url

 更新时间:2016年07月28日 11:45:40   作者:小小流浪的汉子  
本文说的是非拦截URL进行判断,然后调用oc方法这种调用手段,所以不用讨论说为什么不用url这种方法,具体看需求,有需要的可以参考。

先来看看如何在项目中的webview上面点击一个按钮,就能达到调用oc代码

上面的这个页面是webview里面嵌套的一个项目的网页,打印订单点击之后(点击事件是一个js方法),需要调用oc里面集成好的蓝牙打印机功能,来完成打印。

所以这里只能用js代码来直接调用oc代码

1.首先创建一个iOS类,因为这里一般都需要安卓端做一套,iOS端做一套,所以一般这样命名以示区别

.h
#import <Foundation/Foundation.h>
#import <JavaScriptCore/JavaScriptCore.h>

/**
 * js调用oc里 main的代码,需要借助这个协议才行
 */
@protocol JSObjectProtocol <JSExport>

@required
#pragma mark -js调用该oc方法,并且将jsonstring打印出来
- (void)print:(NSString *)jsonString;

@end


@interface iOS : NSObject<JSObjectProtocol>



@end
.m

@implementation iOS


#pragma mark -打印jsonString
- (void)print:(NSString *)jsonString{

  //打印的具体事件
}

2. 在网页加载结束之后调用注册iOS注册

#pragma mark -网页加载完毕,注册ios对象,并且自动检查打印机是否自动连接
-(void)webViewDidFinishLoad:(UIWebView *)webView{

  //首先创建JSContext 对象(此处通过当前webView的键获取到jscontext)
  //这个对象必须创建出来,否则会无法调用到协议里的方法
  iOS *ios = [[iOS alloc] init];

  JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

  context[@"iOS"] = ios;

}

3. 在js的点击事件里面类似下面这样调用即可(下面这段代码写在对应的js代码里面,而非你的oc代码里面)

 if (window["Android"] && window["Android"]["jsPrint"]) {
  var andPrint = window.Android.jsPrint(JSON.stringify(d));
 } else if (window["iOS"] && window["iOS"]["print"]) {

   window["iOS"]["print"](JSON.stringify(d));

} else {
   this.alert.autoCloseTip("找不到打印方法!", 1000);
 }

以上就是关于iOS如何使用javascript代码调用oc方法的全部内容,希望对大家学习IOS开发有所帮助。希望大家多多支持脚本之家。

相关文章

  • iOS自学笔记之XIB的使用教程

    iOS自学笔记之XIB的使用教程

    本篇文章主要介绍了iOS自学笔记之XIB的使用教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • iOS开发之tableView实现左滑删除功能

    iOS开发之tableView实现左滑删除功能

    我们在使用一些应用的时候,在滑动一些联系人的某一行的时候,会出现删除、置顶、更多等等的按钮,下面这篇文章主要就介绍了iOS用tableView实现左划删除功能的方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • iOS的UI开发中UITabBarControlle的基本使用教程

    iOS的UI开发中UITabBarControlle的基本使用教程

    这篇文章主要介绍了iOS的UI开发中UITabBarControlle的基本使用教程,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-12-12
  • iOS开发使用JSON解析网络数据

    iOS开发使用JSON解析网络数据

    JSON是一种轻量级的数据格式,一般用于数据交互,服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)下面我们就看下在IOS开发中如何结合json呢
    2016-02-02
  • IOS图片的原生(Graphics)详解及实例

    IOS图片的原生(Graphics)详解及实例

    这篇文章主要介绍了IOS图片的原生(Graphics)详解及实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • iOS CoreData 增删改查详解

    iOS CoreData 增删改查详解

    这篇文章主要为大家详细介绍了iOS CoreData 增删改查的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • iOS 在线视频生成GIF图功能的方法

    iOS 在线视频生成GIF图功能的方法

    本篇文章主要介绍了iOS 在线视频生成GIF图功能的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • iOS 边下边播的实现代码

    iOS 边下边播的实现代码

    在之前项目中使用的是AVPlayer直接播放URL地址,但是不知道是相机的wifi不够稳定还是代码的问题,app总是出现缓冲卡顿。后来考虑改成边下边播模式,下面小编给大家带来了iOS 边下边播的实现代码,需要的朋友参考下吧
    2017-11-11
  • ios系统下删除文件的代码

    ios系统下删除文件的代码

    本文给大家总结了几则在IOS系统下删除文件的代码,十分的实用,有需要的小伙伴可以参考下。
    2015-05-05
  • iOS10实现推送功能时的注意点和问题总结

    iOS10实现推送功能时的注意点和问题总结

    很多朋友都反馈,发现了iOS9升级到iOS10推送功能不正常的问题,所以这篇文章总结了一下要点,亲们可以根据以下步骤,逐步排查问题,也可以逐步实现iOS10的推送功能。下面来一起看看吧。
    2016-09-09

最新评论