UIWebView简介


是iOS内置的浏览器控件,可以浏览网


页、打开文档等


能够加载html/htm、pdf、docx、txt等格


式的文件


系统自带的Safari浏览器就是通过UIWebView实现的


关于MIME type


MIME的英文全称是“Multipurpose Internet Mail Extensions”多用途互联 网邮件扩展,是一个互联网标准,最早应用于电子邮件系统,后来应 用到浏览器
服务器通过说明多媒体数据的MIME类型,告诉浏览器发送的多媒体 数据的类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些 是Shockwave文件等等
服务器将MIME标志符放入传送的数据中告诉浏览器使用哪种插件读 取相关文件
MIME类型能包含视频、图像、文本、音频、应用程序等数据


获得本地文件的MIMEType
//获得本地文件的MIMEType

- (NSString*)MIMEType:(NSString*)fileName
{

//定义路径NSString*path = [[NSBundlemainBundle]pathForResource:fileNameofType:nil];
//定义URLNSURL*url = [NSURLfileURLWithPath:path];
//定义请求NSURLRequest*request = [NSURLRequestrequestWithURL: url];
//定义响应NSURLResponse*response =nil;

//发送同步请求[NSURLConnectionsendSynchronousRequest:requestreturningResponse:&response
error:nil];
NSLog(@"MIMEType is %@", [responseMIMEType]);
return[responseMIMEType]; }


UIWebView演练--准备项目介绍



准备项目说明
gotoURLString方法由文本框回车事件调用,为了 方便用户加载本地文件


UIWebView演练(1)--gotoURL方法
//访问指定的URL内容- (void)gotoURL:(NSURL*)url {
//使用URL字符串替代URL文本框[_urlTextsetText:[urlabsoluteString]];
//定义请求
NSURLRequest*request = [NSURLRequestrequestWithURL:url];//设置数据检测类型[_webViewsetDataDetectorTypes:UIDataDetectorTypeAll];

//加载请求
[_webViewloadRequest:request]; }



UIWebView--访问网站和加载本地HTML文件


UIWebView--加载本地文本文件和Word文档


UIWebView--加载本地PDF文件



UIWebView演练(2)--loadHTMLString方法//测试加载HTML字符串
NSString*html =@"

Hello chenyilong

";
[_webViewloadHTMLString:htmlbaseURL:nil];
//测试加载部分HTML字符串,不需要显示整个网页内容时,通常使用此方法NSString*partHtml =@"

Hello chenyilong

";
[_webViewloadHTMLString:partHtmlbaseURL:nil];



UIWebView演练(3)--loadData方法
//测试加载本地PDF,需要指定MIMETYPE......
[_webViewloadData:[NSDatadataWithContentsOfFile:dataPath]MIMEType:@"application/pdf"textEncodingName:@"UTF-8"baseURL:nil];
//测试加载本地文本文件,需要指定MIMETYPE......
[_webViewloadData:[NSDatadataWithContentsOfFile:dataPath]MIMEType:@"text/plain"textEncodingName:@"UTF-8"baseURL:nil];

//测试加载本地HTML文件,需要指定MIMETYPE
......
NSURL*baseURL = [NSURLfileURLWithPath:[[NSBundlemainBundle]resourcePath]isDirectory:YES];
[_webViewloadData:[NSDatadataWithContentsOfFile:dataPath]MIMEType:@"text/html"textEncodingName:@"UTF-8"baseURL:baseURL];

说明:baseURL是基准URL,程序要用到其他资源的位置



UIWebViewDelegate代理方法
//网页开始加载的时候调用
- (void)webViewDidStartLoad:(UIWebView*)webView

//网页加载完成的时候调用
- (void)webViewDidFinishLoad:(UIWebView*)webView

//网页加载出错的时候调用
- (void)webView:(UIWebView*)webView didFailLoadWithError: (NSError*)error

//网页中的每一个请求都会被触发这个方法,返回NO代表不执行这个请求(常 用于JS与iOS之间通讯)
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType



JS与iOS之间的通信--iOS调用JS代码
//获取当前页面的url

NSString*url = [_webViewstringByEvaluatingJavaScriptFromString:@"document.location.href"];
NSLog(@"url %@", url);
//获取当前页面的标题NSString*title = [_webView
stringByEvaluatingJavaScriptFromString:@"document.title"];NSLog(@"title %@", title);

//提交表单
[_webViewstringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "];


本节知识点回顾
UIWebView是内置浏览器控件,能够加载html、pdf、txt等多种格式文件
常用加载方法:-loadRequest:
-loadHTMLString:baseURL:
-loadData:MIMEType:textEncodingName:baseURL:
常用导航方法:
-  goBack-回退
-  goForward-前进
-  reload-重载
-  stopLoading-取消载入内容
常用属性:
-  scalespageToFit-自动对页面进行缩放以适应屏幕
-  dataDetectorTypes-设定电话号码、网址、电子邮件和日期等文字变为链接文字
浏览器通过MIME标志符可以知道使用哪种插件读取相关文件iOS可以直接调用js代码与页面通讯