転载:iosの中でobjective-cとjsのインタラクション

7267 ワード

元の出典:http://mkhgg.blog.51cto.com/1741572/752962
 
iOSでjsとobjective-cの相互作用 
iOSにはWebKit.Frame eworkというライブラリがないので、window Script Objectの対象となる方法がないです.これの方法があれば 
便利になりました. 
今は他の方法を利用して、jsとobjective-cの相互作用効果を達成します. 
まず、objective-cでjsのコードを呼び出します.uiwebviewの一つの方法を使ってもいいです. 
strigByEveraluating JavaScript FroomString:後に続くのは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

:https://www.cnblogs.com/ifiew/p/4030714.html