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

来源:互联网 发布:彻底删除硬盘数据软件 编辑:程序博客网 时间:2024/04/18 17:39
  • 首页
  • >
  • 代码片段
  • >
  • 网页 (Webview)代码
  • >
  • 详情

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"
 
@interfaceViewController ()<UIWebViewDelegate>
@property(weak, nonatomic)IBOutletUIWebView *webview;
- (IBAction)getTitle;
 
@end
 
@implementationViewController
 
- (void)viewDidLoad
{
    [superviewDidLoad];
    NSURL*url = [[NSBundlemainBundle]URLForResource:@"test.html"withExtension:nil];
    [self.webviewloadRequest:[NSURLRequestrequestWithURL: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;
    NSRangerange = [urlstr rangeOfString:@"ios://"];
    if(range.length!=0) {
        NSString*method = [urlstr substringFromIndex:(range.location+range.length)];
        SELselctor = NSSelectorFromString(method);
        [selfperformSelector:selctorwithObject:nil];
    }
    returnYES;
}
/**
 *  OC执行JS代码
 */
- (IBAction)getTitle {
     
    [self.webviewstringByEvaluatingJavaScriptFromString:@"alert(document.title);"];
}
 
-(void)openMyAlbum
{
    UIImagePickerController*vc = [[UIImagePickerControlleralloc]init];
    vc.sourceType= UIImagePickerControllerSourceTypePhotoLibrary;
    [selfpresentViewController:vcanimated:YEScompletion:nil];
}
 
-(void)openMyCamera
{
    UIImagePickerController*vc = [[UIImagePickerControlleralloc]init];
    vc.sourceType= UIImagePickerControllerSourceTypeCamera;
    [selfpresentViewController:vcanimated:YEScompletion:nil];
}
 
@end
0 0
原创粉丝点击