UIWebView中Html中用JS调用OC方法及OC执行JS代码

时间:2022-01-21 05:22:51
HTML代码:
<html>
<head>
<title>HTML中用JS调用OC方法</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
[removed]
function openAlbum()
{
// 打开相册(openMyAlbum为OC中的方法)
[removed].href = 'ios://openMyAlbum';
}
function openCamera()
{
// 打开相机(openMyCamera为OC中的方法)
[removed].href = 'ios://openMyCamera';
}
[removed]
</head>
<body>
<br/>
<br/>
<br/>
<input type="button" value="打开相机"> <br><br/>
<input type="button" value="打开相册">
</body>
</html> OC代码:
#import "ViewController.h" @interface ViewController ()<UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webview;
- (IBAction)getTitle; @end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [[NSBundle mainBundle] URLForResource:@"test.html" withExtension:nil];
[self.webview loadRequest:[NSURLRequest requestWithURL:url]];
self.webview.delegate = self;
self.webview.dataDetectorTypes = UIDataDetectorTypeAll;
} #pragma mark UIWebViewDelegate方法
/**
*开始加重请求拦截
*/
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{ NSString *urlstr = request.URL.absoluteString;
NSRange range = [urlstr rangeOfString:@"ios://"];
if (range.length!=) {
NSString *method = [urlstr substringFromIndex:(range.location+range.length)];
SEL selctor = NSSelectorFromString(method);
[self performSelector:selctor withObject:nil];
}
return YES;
}
/**
* OC执行JS代码
*/
- (IBAction)getTitle { [self.webview stringByEvaluatingJavaScriptFromString:@"alert(document.title);"];
} -(void)openMyAlbum
{
UIImagePickerController *vc = [[UIImagePickerController alloc]init];
vc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:vc animated:YES completion:nil];
} -(void)openMyCamera
{
UIImagePickerController *vc = [[UIImagePickerController alloc]init];
vc.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:vc animated:YES completion:nil];
} @end