UIWebView中Html中用JS调用OC方法及OC执行JS代码
HTML代码:
<html>
<head>
<title>HTML中用JS调用OC方法</title>
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
<script>
function test()
{
alert("test alert...");
return "abcd";
}
</script>
<body>
<br/>
<br/>
<br/>
<a href='ios://openMyAlbum'>打开相机</a><br><br/>
<a href = 'ios://openMyCamera'>打开相册</a>
</body>
</html>
#OBJECT-C
- -(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
- {
- 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.sourceType
- = UIImagePickerControllerSourceTypePhotoLibrary;
- [self
- presentViewController:vc
- animated:YES
- completion:nil];
- }
- -(void)openMyCamera
- {
- [_webView stringByEvaluatingJavaScriptFromString:@"test();"];
- return;
- UIImagePickerController
- *vc = [[UIImagePickerController
- alloc]init];
- vc.sourceType
- = UIImagePickerControllerSourceTypeCamera;
- [self
- presentViewController:vc
- animated:YES
- completion:nil];
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- _webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
- [self.view addSubview:_webView];
- NSString *path = [[NSBundle mainBundle] pathForResource:@"test.html" ofType:nil];
- NSURL *url = [NSURL fileURLWithPath:path];
- NSURLRequest *req = [[NSURLRequest alloc] initWithURL:url];
- _webView.delegate = self;
- _webView.dataDetectorTypes = UIDataDetectorTypeAll;
- [_webView loadRequest:req];
- // Do any additional setup after loading the view, typically from a nib.
- }
原文出处:http://blog.csdn.net/zttjhm/article/details/43304329