转载 http://code4app.com/snippets/one/UIWebView中Html中用JS调用OC方法及OC执行JS代码/546d7ba6933bf03d0a8b4ccd
UIWebView中Html中用JS调用OC方法及OC执行JS代码
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | 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!=0) { 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 |