此解决方案原理:
1、在ViewController.h中声明方法和成员变量,以及webView的委托:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//
// ViewController.h
// JS_IOS_01
//
// Created by IMAC on 14-2-24.
// Copyright (c) 2014年 Wanggsx. All rights reserved.
//
#
import
<uikit uikit.h=
""
>
@interface
ViewController : UIViewController<uiwebviewdelegate>
{}
@property
(nonatomic,retain) IBOutlet UIWebView *webView;
// 两个参数
-(
void
)getParam1:(NSString*)str1 withParam2:(NSString*)str2;
@end
</uiwebviewdelegate></uikit>
|
2、在ViewController.m中合成成员变量并实现该方法:
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
|
//
// ViewController.m
// JS_IOS_01
//
// Created by IMAC on 14-2-24.
// Copyright (c) 2014年 Wanggsx. All rights reserved.
//
#
import
ViewController.h
@interface
ViewController ()
@end
@implementation
ViewController
@synthesize
webView;
- (
void
)viewDidLoad
{
[
super
viewDidLoad];
}
- (
void
)didReceiveMemoryWarning
{
[
super
didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(
void
)getParam1:(NSString*)str1 withParam2:(NSString*)str2
{
NSLog(@收到html传过来的参数:str1=%@,str2=%@,str1,str2);
}
@end
|
1
|
|
4、在ViewController的viewDidLoad方法中加载该html网页:
1
2
3
4
5
6
7
8
9
10
11
12
|
- (
void
)viewDidLoad
{
[
super
viewDidLoad];
webView.backgroundColor = [UIColor clearColor];
//webView.scalesPageToFit =YES;
webView.delegate =self;
NSString *basePath = [[NSBundle mainBundle]bundlePath];
NSString *helpHtmlPath = [basePath stringByAppendingPathComponent:
@jsIOS
.html];
NSURL *url = [NSURL fileURLWithPath:helpHtmlPath];
NSURLRequest *request=[NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
|
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
|
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = [[request URL] absoluteString];
urlString = [urlString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(
@urlString
=%@,urlString);
NSArray *urlComps = [urlString componentsSeparatedByString:@:
//];
if
([urlComps count] && [[urlComps objectAtIndex:
0
] isEqualToString:
@objc
])
{
NSArray *arrFucnameAndParameter = [(NSString*)[urlComps objectAtIndex:
1
] componentsSeparatedByString:@:/];
NSString *funcStr = [arrFucnameAndParameter objectAtIndex:
0
];
if
(
1
== [arrFucnameAndParameter count])
{
// 没有参数
if
([funcStr isEqualToString:
@doFunc1
])
{
/*调用本地函数1*/
NSLog(
@doFunc1
);
}
}
else
{
//有参数的
if
([funcStr isEqualToString:
@getParam1
:withParam2:])
{
[self getParam1:[arrFucnameAndParameter objectAtIndex:
1
] withParam2:[arrFucnameAndParameter objectAtIndex:
2
]];
}
}
return
NO;
}
return
TRUE;
}
|
以下是完整的ViewController.m的代码:
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
|
//
// ViewController.m
// JS_IOS_01
//
// Created by IMAC on 14-2-24.
// Copyright (c) 2014年 Wanggsx. All rights reserved.
//
#
import
ViewController.h
@interface
ViewController ()
@end
@implementation
ViewController
@synthesize
webView;
- (
void
)viewDidLoad
{
[
super
viewDidLoad];
webView.backgroundColor = [UIColor clearColor];
//webView.scalesPageToFit =YES;
webView.delegate =self;
NSString *basePath = [[NSBundle mainBundle]bundlePath];
NSString *helpHtmlPath = [basePath stringByAppendingPathComponent:
@jsIOS
.html];
NSURL *url = [NSURL fileURLWithPath:helpHtmlPath];
NSURLRequest *request=[NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
- (
void
)didReceiveMemoryWarning
{
[
super
didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = [[request URL] absoluteString];
urlString = [urlString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(
@urlString
=%@,urlString);
NSArray *urlComps = [urlString componentsSeparatedByString:@:
//];
if
([urlComps count] && [[urlComps objectAtIndex:
0
] isEqualToString:
@objc
])
{
NSArray *arrFucnameAndParameter = [(NSString*)[urlComps objectAtIndex:
1
] componentsSeparatedByString:@:/];
NSString *funcStr = [arrFucnameAndParameter objectAtIndex:
0
];
if
(
1
== [arrFucnameAndParameter count])
{
// 没有参数
if
([funcStr isEqualToString:
@doFunc1
])
{
/*调用本地函数1*/
NSLog(
@doFunc1
);
}
}
else
{
//有参数的
if
([funcStr isEqualToString:
@getParam1
:withParam2:])
{
[self getParam1:[arrFucnameAndParameter objectAtIndex:
1
] withParam2:[arrFucnameAndParameter objectAtIndex:
2
]];
}
}
return
NO;
}
return
TRUE;
}
-(
void
)getParam1:(NSString*)str1 withParam2:(NSString*)str2
{
NSLog(@收到html传过来的参数:str1=%@,str2=%@,str1,str2);
}
@end
|