ios中的webview其实可以叫做是浏览器控件,可以用来加载网页,html,也可以加载pdf,doc文档,mp4等文件,举个例子
NSURL * url=[[NSBundle mainBundle]URLForResource:@"kk.pdf" withExtension:nil];
NSURLRequest * request=[NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
//自动检测电话号码,网址、邮件地址
self.webView.dataDetectorTypes=UIDataDetectorTypeAll;
//允许缩放网页
self.webView.scalesPageToFit=YES;
想要让OC去调用javaScript的代码,首先设置webview的代理,我们要等待网页加载完毕之后再去调用js的代码。
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
[webView stringByEvaluatingJavaScriptFromString:@"alert('kk')"];
}
我们也可以获取javaScript中函数执行完毕的结果比如说有一段js代码是这样子的
<script>
function test()
{
return "kk";
}
</script>
我们可以获取这个方法执行的结果
NSString * str=[webView stringByEvaluatingJavaScriptFromString:@"test();"];
想通过网页点击一个链接去调用OC的代码我们可以这么做,比如我们加载了一个网页,我们可以通过判断我们点击的那个链接的协议,来指定执行特定的方法,当然我们是自定义的一个协议
//发送请求之前调用,
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
//获取url中的协议
NSString * string=request.URL.scheme;
//判断协议是否是自定义协议
if([request.URL.scheme isEqualToString:@"source"])
{
NSLog(@"%@",request.URL.pathComponents);
//获取方法名
NSString * methodName=request.URL.pathComponents[1];
//获取参数
NSString * param=request.URL.pathComponents[2];
//获取这个方法
SEL method=NSSelectorFromString(methodName);
//判断控制器有没有这个方法
if([self respondsToSelector:method])
{
//执行这个方法
[self performSelector:method withObject:param];
}
return NO;
}
//如果这里返回NO,就所有的请求都不执行
return YES;
}
<a href="source:///showMessage:/hello">调用方法</a>,这个是一个自定义的协议,showMeaasge是方法名带参数,后面hello是参数。