Webview与原生交互传值
2016-05-11 16:48
267 查看
UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0,0, MainScreenWidth,MainScreenHeight)]; WebView = webView; WebView.backgroundColor = [UIColor whiteColor]; WebView.delegate = self; [WebView setScalesPageToFit:YES]; [self.view addSubview:WebView];
</pre><pre code_snippet_id="1679353" snippet_file_name="blog_20160511_3_4775449" name="code" class="objc"><pre name="code" class="objc">#pragma mark 调用内嵌H5页面-绝对路劲
<pre name="code" class="objc">// NSString *filePath = [[NSBundle mainBundle]pathForResource:@"index" ofType:@"html"];
</pre><pre code_snippet_id="1679353" snippet_file_name="blog_20160511_6_2725325" name="code" class="objc">#pragma mark 调用url加载h5页面 NSString *filePath = [NSString stringWithFormat:@"%@videoApp/video/index.html",HTTP_BASE_URL]; filePath = [filePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL * url = [NSURL URLWithString:filePath]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [webView loadRequest:request]; <pre name="code" class="objc">#pragma mark 调用内嵌H5页面-相对路劲
</pre> http://www.wjxfpf.com/2015/10/800136.html <pre>
http://blog.csdn.net/mangosnow/article/details/36879725
当APP打包的时候,它将所有资源文件平行的放到根目录中,这个包就是(NSBundle mainBundle),也就是说文件全局中不允许重名文件存在(目录引用除外,下面会讲到)。>一般为了在包中引用其它前端人员的Html 包,而不想改动内容中的资源路径(比如img,css,js等),在这里,我找到一个办法;当在APP中引用一个web html包的时候,我们应该以实际目录的形式<这个时候(Project Navigator)目录将是蓝色文件夹,html 保证是相对的目录引用>废话不多说,上代码:// [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"html5-css3-404-animation/index.html" relativeToURL:[[NSBundle mainBundle] bundleURL]]]];获取html标题:[WebViewstringByEvaluatingJavaScriptFromString:@"document.title"];禁止滚动:[(UIScrollView *)[[webViewsubviews]objectAtIndex:0]setBounces:NO];js掉原生方法给前台传值,通过拦截请求拆分来处理:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {NSString *urlStr = request.URL.absoluteString;NSLog(@"-------%@",urlStr);// 格式 neng://loadUrl/blog.csdn.net 协议/方法/网址//判断链接中的协议头,如果是neng://, 则进行相关操作#pragma mark 点击内容if ([urlStr hasPrefix:@"ClickContent://"]) {//拿到除去协议头的后部NSString *urlContent = [urlStr substringFromIndex:[@"ClickContent://" length]];//用/来拆分字符串NSArray *urls = [urlContent componentsSeparatedByString:@"/"];//NSLog(@"拆分的结果为:%@", urls);//取出方法名if (urls.count != 2) {return NO;}NSString *PushTVshow = [NSString stringWithFormat:@"%@:", urls[0]]; //带参数的方法,加冒号,没有参数的不加冒号SEL Push = NSSelectorFromString(PushTVshow);//取消警告# pragma clang diagnostic push# pragma clang diagnostic ignored "-Warc-performSelector-leaks"[self performSelector:Push withObject:urls[1]]; //将blog.csdn.net作为参数传入 ,没有参数的也不用传惨直接掉方法// [self performSelector:Push];# pragma clang diagnostic pop// NSLog(@"方法名为%@, 传入参数为%@", PushTVshow, urls[1]);return NO;}
</pre><pre code_snippet_id="1679353" snippet_file_name="blog_20160511_12_817688" name="code" class="objc">#pragma mark - 传两参数if ([urlStr hasPrefix:@"buymembers://"]) {//拿到除去协议头的后部NSString *urlContent = [urlStr substringFromIndex:[@"buymembers://" length]];//用/来拆分字符串NSArray *urls = [urlContent componentsSeparatedByString:@"/"];// NSLog(@"---%@", urlContent);if (urls.count != 3) {return NO;}// NSLog(@"拆分的结果为:%@", urls);NSString *buyMember = [NSString stringWithFormat:@"%@::", urls[0]]; //带参数的方法,加冒号// NSLog(@"方法名为%@, 传入参数为%@", buyMember, urls[1]);SEL Comment = NSSelectorFromString(buyMember);//取消警告# pragma clang diagnostic push# pragma clang diagnostic ignored "-Warc-performSelector-leaks"[self performSelector:Comment withObject:urls[1] withObject:urls[2]]; //将blog.csdn.net作为参数传入# pragma clang diagnostic popreturn NO;}return YES;}
点击内容-(void)ClickContent:(NSString *)url{}// 两参数-(void)buyMember:(NSString *)PAY_MONEY :(NSString*)LINK_ID{}js写法:oc掉js方法:[WebViewstringByEvaluatingJavaScriptFromString:[NSStringstringWithFormat:@"close_payWindow()"]];传参方法:[WebViewstringByEvaluatingJavaScriptFromString:[NSStringstringWithFormat:@"getVip('%@');",@"true"]];
相关文章推荐
- Android打开系统GPS设置页面代码
- Android应用开发:Dialog使用及示例
- 开源控件NumberCircleProgressBar(圆形进度条)存在两条线的解决方法
- 谈一谈iOS单例模式
- cocos2d-x v3.10之ccui.PageView 翻页实现
- 对比swift、c#、java的getter和setter方法
- iOS数据持久化文件读写之偏好设置
- iOS开发代码规范(通用)
- 04_Swift2基础之类型安全和类型推测+字面量+类型别名
- android彻底退出问题
- 02_Swift2基础之常量和变量+注释+分号
- Object-c 开源类库
- iOS 仿Android Toast效果
- 如何解决PC端和移动端自适应问题?
- iOS之09-特有语法
- iOSDay15之OC集合
- iOSDay13之OC NSString类
- iOS之08-核心语法
- iOSDay12之OC属性和点语法
- iOSDay11之OC继承