转载 iOS中js与objective-c的交互

因为在iOS中没有WebKit.Framework这个库的,所以也就没有 windowScriptObject对象方法了。要是有这个的方法的话 
就方便多了,(ps:MacOS中有貌似) 

现在我们利用其他方法去达到js与objective-c的交互效果。 

首先是objective-c调用js中的代码,可以用uiwebview中的一个方法 
stringByEvaluatingJavaScriptFromString:后面接的是js中的方法名。这个函数的返回值就是所调用js方法 

的返回值。 

而在js调用objective-c的方法就没那么简单了, 

在js中的代码应该这么做: 

function testFunc(cmd,parameter1) 

    alert(1); 
    document.write(Date()); 
    document.location="objc://"+cmd+":/"+parameter1;  //cmd代表objective- 
c中的的方法名,parameter1自然就是参数了 



而在objective-c中,也是利用uiwebview的一个方法, 
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithReque st: 
(NSURLRequest*)request navigationType: 
(UIWebViewNavigationType)navigationType //这个方法是网页 

中的每一个请求都会被触发的 

    NSString *urlString = [[request URL] absoluteString]; 

    NSArray *urlComps = [urlString 
componentsSeparatedByString:@"://"]; 

    if([urlComps count] && [[urlComps objectAtIndex:0] 
isEqualToString:@"objc"]) 
    { 

        NSArray *arrFucnameAndParameter = [(NSString*)[urlComps 
objectAtIndex:1] componentsSeparatedByString:@":/"]; 
        NSString *funcStr = [arrFucnameAndParameter objectAtIndex:0]; 

        if (1 == [arrFucnameAndParameter count]) 
        { 
            // 没有参数 
            if([funcStr isEqualToString:@"doFunc1"]) 
            { 

                 
                NSLog(@"doFunc1"); 

            } 
        } 
        else if(2 == [arrFucnameAndParameter count]) 
        { 
            //有参数的 
            if([funcStr isEqualToString:@"doFunc1"] && 
[arrFucnameAndParameter objectAtIndex:1]) 
            { 
                
                NSLog(@"doFunc1:parameter"); 
            } 
        } 
        return NO; 
    }; 
    return YES; 



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

stringByEvaluatingJavaScriptFromString:函数去掉js的方法,把返回值当做js方法中的参数形式传回去给 
js。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值