1、首先是objective-c调用js中的代码,可以用UIWebview中的一个方法 stringByEvaluatingJavaScriptFromString:后面接的是js中的方法名。这个函数的返回值就是所调用js方法 的返回值。 比如调用js中方法myFunction(),可以在代码中调用NSString *str = [self.webviewstringByEvaluatingJavaScriptFromString:@"myFunction();"];

2、js调用objective-c的方法就没那么简单了

首先在js中声明方法

<html>
<head>
<meta http-equiv="content-type"content="text/html;charset=utf-8">
<title>js调用oc</title>
<script type="text/javaScript">
/* 调用本地带参数的方法 */
function testFunction1(cmd,parameter1){
return document.location="objc://"+cmd+":/"+parameter1; //cmd代表objective-c中的的方法名,parameter1自然就是参数了
}
/* 调用本地不带参数的方法 */
function testFunction2(cmd){
return document.location="objc://"+cmd; //cmd代表objective-c中的的方法名
}
</script>
</head>
<body>
<p><button type="text" id="text1" value="点击这里1"onclick="testFunction1('printLog:','str')">调用本地带参数的方法</button></p>
<p><button type="text" id="text2" value="点击这里2"onclick="testFunction2('testFunc')">调用本地不带参数的方法</button></p>
</body>
</html>

再调用webview代理

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = [[request URL] absoluteString];
NSArray *urlComps = [urlStringcomponentsSeparatedByString:@"://"];
if([urlComps count] && [[urlCompsobjectAtIndex:0] isEqualToString:@"objc"])
{
NSArray *arrFucnameAndParameter = [(NSString*)[urlCompsobjectAtIndex:1] componentsSeparatedByString:@":/"];
NSString *funcStr = [arrFucnameAndParameterobjectAtIndex:0];
if (1 == [arrFucnameAndParametercount])
{
// 没有参数
if([funcStr isEqualToString:@"testFunc"])
{
/*调用本地函数*/
[self testFunc];
}
}
else if(2 == [arrFucnameAndParametercount])
{
//有参数的
if([funcStr isEqualToString:@"printLog:"] && [arrFucnameAndParameterobjectAtIndex:1])
{
/*调用本地函数*/
[self printLog:@"js调用本地带参数的方法成功!"];
}
}
return NO;
};
return YES;
}

- (void)printLog:(NSString *)str
{
NSLog(@"%@", str);
}

- (void)testFunc
{
NSLog(@"js调用本地不带参数的方法成功!");
}

最新文章

  1. CSS3 Media Queries 实现响应式设计
  2. [Leetcode] Repeated DNA Sequences
  3. C#-WebForm-★ 制作图片验证码 ★
  4. VS发布网站详细步骤
  5. 安装配置opensips
  6. 【练习】如何显示本地主机上的MySQL客户机版本
  7. linux的一点小随笔
  8. mysql快速上手2
  9. Solr4.7新建core
  10. C# Unix时间戳转换为时间
  11. 【转】判断点在多边形内(matlab)
  12. 痞子衡随笔:常用的数据传输差错检测技术(1)- 奇偶校验(Parity Check)
  13. Java中equal和==区别及String创建过程
  14. memcached实战系列(七)理解Memcached的数据过期方式、新建过程、查找过程
  15. 盖洛普Q12在团队中的应用
  16. Web前端3.0时代,“程序猿”如何“渡劫升仙”
  17. 部署KVM
  18. python中的单例模式、元类
  19. 【Linux】【Jenkins】配置过程中,立即构建时,maven找不到的问题解决方案
  20. ASP.NET OAuth、jwt、OpenID Connect

热门文章

  1. Elasticsearch和MongoDB
  2. RocketMQ(九):消息发送(续)
  3. How to remove a Data Guard Configuration from Primary Database (文档 ID 733794.1)
  4. ORA-01665 control file is not a standby control file
  5. JQuery map()函数
  6. 【】minimum
  7. NLP系列(1)_从破译外星人文字浅谈自然语言处理的基础
  8. 博客已迁移至http://blog.csdn.net/lujinhong2/
  9. Docker搭建ES
  10. POJ 1745 Divisibility DP