iOS之webView与JS交互篇00『 基础知识 』程序员

OC & JS 互调

2016-07-12  本文已影响162人  iOS_Job
JS调OC函数步骤:
// 此协议必须遵守 JSExport
// 此协议中的方法就是 web 定义的方法名
@protocol JSObjectDelegate <JSExport>
#warning 为什么添加了 @optional 下面的方法不会掉用呢 ??
//@optional
- (void)callCamera;
- (void)share:(NSString *)shareContent;
@end

JSObjectDelegate 方法实现:
#pragma mark -- JSObjectDelegate
- (void)callCamera
{
NSLog(@" /// JS Call OC callCamera ///");

// 执行完OC代码,,有必要则回调 JS

//    JSValue *picCallback = self.jsContext[@"picCallback"];
//    [picCallback callWithArguments:@[@"images"]];

    NSString *jsFuncStr = @"picCallback('images')";
    [self.jsContext evaluateScript:jsFuncStr];
}

- (void)share:(NSString *)shareContent
{
    NSLog(@" /// JS Call OC Share: %@",shareContent);

   // 执行完OC代码,,有必要则回调 JS

//    JSValue *shareCallback = self.jsContext[@"shareCallback"];
//    [shareCallback callWithArguments:nil];

    NSString *jsFuncstr2 = @"shareCallback()";
    [self.jsContext evaluateScript:jsFuncstr2];  
}
OC回调JS的两种方法:

1、 读取回调web页面的方法转化为string,用jsContext调用:

NSString *jsFuncStr = @"picCallback('images')";
[self.jsContext evaluateScript:jsFuncStr];

2、将web页面的方法名转化为JSValue,再调用:

JSValue *picCallback = self.jsContext[@"picCallback"];
[picCallback callWithArguments:@[@"images"]];
上一篇下一篇

猜你喜欢

热点阅读