iOS UIWebView 中 js调用OC 打开相册 获取图片, OC调用js 将图片加载到html上
2015-12-01 15:32
465 查看
线上html
在oc中
<!DOCTYPE html> <html> <head> <title>HTML中用JS调用OC方法</title> <style> #div1 { background-color:#ccc; width:100px; height:100px; position:absolute; top:400px } </style> <meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <script> function getImg(url) { var oDiv = document.getElementById("div1"); var oImg = document.getElementById("img1"); oImg.src = url; } </script> </head> <body> <p id="div1"> <img id="img1" src="" height="200" width="200" /> </p> <br/> <a href='ios://openMyAlbum'>打开相册</a><br><br/> </body> </html>
在oc中
// // ViewController.m // // Created by Hwangkop on 15/11/30. // Copyright © 2015年 Hp. All rights reserved. // #import "ViewController.h" #import <AVFoundation/AVFoundation.h> @interface ViewController () <UIWebViewDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate> { UIWebView *_webView; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; [self.view addSubview:_webView]; NSString *path = [[NSBundle mainBundle] bundlePath]; NSURL *baseURL = [NSURL fileURLWithPath:path]; NSString * htmlPath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]; NSString * htmlCont = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil]; [_webView loadHTMLString:htmlCont baseURL:baseURL]; _webView.delegate = self; } -(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { //通过url获取 js方法在oc中实现该方法 NSString *urlstr = request.URL.absoluteString; NSRange range = [urlstr rangeOfString:@"ios://"]; if (range.length!=0) { NSString *method = [urlstr substringFromIndex:(range.location+range.length)]; SEL selctor = NSSelectorFromString(method); [self performSelector:selctor withObject:nil]; } return YES; } //要实现的方法 -(void)openMyAlbum { UIImagePickerController *vc = [[UIImagePickerController alloc] init]; vc.delegate = self; vc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentViewController:vc animated:YES completion:nil]; } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info { UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"pic_100.png"]]; // 保存 [UIImagePNGRepresentation(image)writeToFile: filePath atomically:YES]; [picker dismissViewControllerAnimated:YES completion:^{ // NSLog(@"%@", filePath); // oc 调用js 并且传递图片路径参数 [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getImg('%@')", filePath]]; }]; } @end
相关文章推荐
- Android 隐藏软件盘
- android kill 进程名
- CNN: Single-label to Multi-label
- 简单介绍Android开发中的Activity控件的基本概念
- iOS 创建单例的三种方法
- 【转载】Android Monkey 命令行可用的全部选项
- iOS设置颜色渐变
- 关于shareSDK微信分享
- cocos2dx js 常用端版本判断记录
- android实现沉浸式之systembartintmanager
- 仿微信、短信、QQ等消息数目右上角红色小圆球气泡显示(基于Android XML布局文件实现)
- Android App开发常用专题开源代码
- Swift备忘 - 自定义日志记录中的print与NSDate
- 3D Touch swift 版本
- Android - Activity的onStart()和onResume()
- 通过URL协议实现从Safari等浏览器中跳转回到你的app
- IOS APP开发提交流程证书问题
- iOS系统自带指纹验证的使用
- 苹果工具下载Apple developer download
- 让多个Fragment 切换时不重新实例化