一、JS調(diào)用OC原生
1本缠、引入庫以及頭文件
2窍育、為方便操作,加載本地html
NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
3肮疗、在test.html中添加一個(gè)按鈕
給test.html的按鈕添加一個(gè)打印的事件
function btnAction()
{
print('傳入?yún)?shù)1','傳入?yún)?shù)2');
}
4、在webViewDidFinishLoad方法中實(shí)現(xiàn)JS調(diào)用OC的方法
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
//定義一個(gè)上下文對(duì)象? ? JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//定義好JS要調(diào)用的方法, print就是調(diào)用的print方法名
context[@"print"] = ^() {
//在上下文對(duì)象中,取出要調(diào)用的JS方法
NSArray *args = [JSContext currentArguments];
//在主線程對(duì)UI操作
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"方式一"
message:@"這是JS調(diào)用OC原生的彈出窗" delegate:self
cancelButtonTitle:@"收到" otherButtonTitles:nil];
[alertView show];
});
for (JSValue *jsVal in args) {
NSLog(@"%@", jsVal.toString);? //打印結(jié)果是:JS傳入?yún)?shù)1? JS傳入?yún)?shù)2
}
}
二扒接、OC原生調(diào)用JS
1.在html中定義一個(gè)要被OC調(diào)用的JS方法
2.在webViewDidFinishLoad方法中實(shí)現(xiàn)OC調(diào)用JS的方法
[context evaluateScript:@"abc()"];
最后附上代碼的兩張圖(想要demo的私信我發(fā)給你)