你好,游客 登录 注册 搜索
背景:
阅读新闻

Objective-C与js相互调用及传参数注意

[日期:2013-06-09] 来源:Linux社区  作者:pearlhuzhu [字体: ]

1、Objective-c调用js方法,只是需要调用uiwebview自带的方法就可以了。

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getHtmlString(‘%@’)",htmlStr]];

2、js调用Objective-c方法,这时就需要和js约定一个参数或者方法了。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

在这个回调方法中,我们会得到服务器传过来的数据request,我们可以判断穿过来的参数,然后进行判断调用oc的方法。

            if ([request.URL.scheme isEqualToString:@"gethtmlstring"]) {
               
                NSString *htmlStr = [self getHtmlString:description];
                htmlStr =  [htmlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
                [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getHtmlString(\"%@\")",htmlStr]];
            }

这样就实现了对Objective-C的调用了。
 
在这里特别值得注意的问题:我这里传了html格式的参数。我在这里就遇到了,传过去的参数始终不对,无法调用js的方法。
 
stringWithContentsOfFile,这个方法用来读取文件,如果不指定编码方式的话,有可能造成数据的丢失,所以我这里指定了utf-8的编码方式。 在传参数的时,还有可能的一种问题。这个参数里面如果带有(\r \n ')等等, js那边收不到这个值, 这些带\的需要转义, 如下这么写js才能收到完整的消息:

message = [message stringByReplacingOccurrencesOfString:@"\n" withString:@"\\\\n"];
NSString *jsMethod  = [NSString stringWithFormat:@"JsMethod(\"%@\")", message]

例子代码:

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2013年资料/6月/9日/Objective-C与js相互调用及传参数注意

linux
相关资讯       Objective-C 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款