码迷,mamicode.com
首页 > 移动开发 > 详细

转载:ios中objective-c与js的交互

时间:2014-10-17 13:21:43      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   java   sp   

原始出处:http://mkhgg.blog.51cto.com/1741572/752962

 

iOS中js与objective-c的交互 
因为在iOS中没有WebKit.Framework这个库的,所以也就没有 windowScriptObject对象方法了。要是有这个的方法的话 
就方便多了,(ps:MacOS中有貌似) 
现在我们利用其他方法去达到js与objective-c的交互效果。 
首先是objective-c调用js中的代码,可以用uiwebview中的一个方法 
stringByEvaluatingJavaScriptFromString:后面接的是js中的方法名。这个函数的返回值就是所调用js方法 
的返回值。 
而在js调用objective-c的方法就没那么简单了, 
在js中的代码应该这么做: 
1 function testFunc(cmd,parameter1) 
2 { 
3     alert(1); 
4     document.write(Date()); 
5     document.location="objc://"+cmd+":/"+parameter1;  //cmd代表objective-c中的的方法名,parameter1自然就是参数了 
6 } 
 
而在objective-c中,也是利用uiwebview的一个方法, 
 1 - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest: 
 2 (NSURLRequest*)request navigationType: 
 3 (UIWebViewNavigationType)navigationType //这个方法是网页中的每一个请求都会被触发的 
 4 { 
 5     NSString *urlString = [[request URL] absoluteString]; 
 6     NSArray *urlComps = [urlString 
 7 componentsSeparatedByString:@"://"]; 
 8     if([urlComps count] && [[urlComps objectAtIndex:0] 
 9 isEqualToString:@"objc"]) 
10     { 
11         NSArray *arrFucnameAndParameter = [(NSString*)[urlComps 
12 objectAtIndex:1] componentsSeparatedByString:@":/"]; 13 NSString *funcStr = [arrFucnameAndParameter objectAtIndex:0]; 14 if (1 == [arrFucnameAndParameter count]) 15 { 16 // 没有参数 17 if([funcStr isEqualToString:@"doFunc1"]) 18 { 19 /*调用本地函数1*/ 20 NSLog(@"doFunc1"); 21 } 22 } 23 else if(2 == [arrFucnameAndParameter count]) 24 { 25 //有参数的 26 if([funcStr isEqualToString:@"doFunc1"] && 27 [arrFucnameAndParameter objectAtIndex:1]) 28 { 29 /*调用本地函数1*/ 30 NSLog(@"doFunc1:parameter"); 31 } 32 } 33 return NO; 34 }; 35 return YES; 36 }

这个方法是可以达到js调用本地objective-c的方法,可惜没办法把返回值返回给js,所以还是要绕过 
stringByEvaluatingJavaScriptFromString:这个弯,用 
 
 
stringByEvaluatingJavaScriptFromString:

函数去掉js的方法,把返回值当做js方法中的参数形式传回去给 
js。这个可以有,呵呵~ 

本文出自 “命苦” 博客,请务必保留此出处http://mkhgg.blog.51cto.com/1741572/752962

转载:ios中objective-c与js的交互

标签:style   blog   http   color   io   os   ar   java   sp   

原文地址:http://www.cnblogs.com/ifiew/p/4030714.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!