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
;
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
|