iOS-基于UIWebView的JS和OC交互

UIWebView中的JS与ViewController中的OC进行交互,必须两边可以进行方法和参数上的传递。

分为两个方向:

JS to OC

UIWebView的Delegate中提供了截取请求的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
NSString *urlString = [[request URL] absoluteString];
NSRange range = [urlString rangeOfString:@"test://"];
if (range.length) {
NSString *method = [urlString substringFromIndex:(range.location + range.length)];
if([method isEqualToString:@"back"])
[self back];
else
[self handleError:UrlError withMessage:@"接口路径错误"];
return NO;
}
return YES;
}

通过该方法,可以获取JS的请求,并从URL路径中获取到调用的方法名和参数,从而调用相应的OC方法。

OC to JS

UIWebView中定义了以下方法,可以直接调用JS中的方法,并传递参数:

[UIWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:
    @"getErrorCallBack(%d, '%@')", errorCode, errorMessage]];

这里,注意字符串需要用单引号括起来,否则会调用不成功。