IOS7 js 调用IOS

一:自从IOS7 以后JavaScriptCore iOS 和 js的交互就变的简单
这里我主要来说下 JS 调用 IOS

  1. 定义一个协议 WXExportProtocol 这个协议是 属于JSExport 协议的。里面有个方法hideMenuBotton,这个方法名是服务器定义好的,如果服务器传一个参数 就定义成- (void)hideMenuBotton:(NSNumber )isHidden;如果传两个参数就定义成- (void)hideMenuBotton:(NSNumber )isHidden :(NSNumber *)num; 依次类推。
//
//  WXExportProtocol.h
//
//  Created by apple on 16/1/21.
//  Copyright © 2016年 李重阳. All rights reserved.
//

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

//这里是服务器里面的参数函数
@protocol WXExportProtocol <JSExport>


- (void)hideMenuBotton:(NSNumber *)isHidden;

@end

2.为了能够封装起来 我们需要写一个代理 来把 WXExportProtocol 里面的方法用另外一个协议接出去,具体的看代码
定义一个WXJSObject 和 一个WXJSObjectDelegate 协议

//
//  WXJSObject.h
//
//  Created by apple on 16/1/21.
//  Copyright © 2016年 李重阳. All rights reserved.
//

#import <Foundation/Foundation.h>

// 接好的js的数据, 然后传给外界用的接口
@protocol WXJSObjectDelegate <NSObject>

- (void)wxWeb_hideMenuBotton:(NSNumber *)isHidden;

@end


@interface WXJSObject : NSObject

@property (nonatomic,assign) id<WXJSObjectDelegate>delegate;

@end
//
//  WXJSObject.m
//
//  Created by apple on 16/1/21.
//  Copyright © 2016年 李重阳. All rights reserved.
//

#import "WXJSObject.h"
#import "WXExportProtocol.h"

@interface WXJSObject ()<WXExportProtocol>

@end

@implementation WXJSObject

- (void)hideMenuBotton:(NSNumber *)isHidden {

    if ([self.delegate respondsToSelector:@selector(wxWeb_hideMenuBotton:)]) {
        [self.delegate wxWeb_hideMenuBotton:isHidden];
    }

}



@end

3.接下来在 UIWebView 的一个控制器里面 来调用js

/**
 *  开始请求
 */
- (void)webViewDidStartLoad:(LeeWebView *)webView {

    //首先创建JSContext 对象(相当于 一个C++ 里面的句柄)
    JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    WXJSObject * wxJSObj = [[[WXJSObject alloc]init] autorelease];
    wxJSObj.delegate = self;
    context[@"WeiXueJS"]=wxJSObj;
    self.context = context;
}
/**
 *  是否隐藏右边的按钮
 *
 *  @param isHidden
 */
- (void)wxWeb_hideMenuBotton:(NSNumber *)isHidden {

    [self.navBar hiddenRightMenus:[isHidden boolValue]];

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值