UIWebView---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址(2013年12月29日更新版)
UIWebView
技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong
UIWebView简介
• 是iOS内置的浏览器控件,可以浏览网页、打开文档等
• 能够加载html/htm、pdf、docx、txt等格式的文件
• 系统自带的Safari浏览器就是通过UIWebView实现的
关于MIME type
• MIME的英文全称是“Multipurpose Internet Mail Extensions” 多用途互联 网邮件扩展,是一个互联网标准,最早应用于电子邮件系统,后来应 用到浏览器
• 服务器通过说明多媒体数据的MIME类型,告诉浏览器发送的多媒体 数据的类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些 是Shockwave文件等等
• 服务器将MIME标志符放入传送的数据中告诉浏览器使用哪种插件读 取相关文件
• MIME类型能包含视频、图像、文本、音频、应用程序等数据
关于MIME type
• MIME的英文全称是“Multipurpose Internet Mail Extensions” 多用途互联 网邮件扩展,是一个互联网标准,最早应用于电子邮件系统,后来应 用到浏览器
• 服务器通过说明多媒体数据的MIME类型,告诉浏览器发送的多媒体 数据的类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些 是Shockwave文件等等
• 服务器将MIME标志符放入传送的数据中告诉浏览器使用哪种插件读 取相关文件
• MIME类型能包含视频、图像、文本、音频、应用程序等数据
//转载请注明出处--本文永久链接:http://www.cnblogs.com/ChenYilong/p/3495622.html
获得本地文件的MIMEType
// 获得本地文件的MIMEType
获得本地文件的MIMEType
// 获得本地文件的MIMEType
- (NSString *)MIMEType:(NSString *)fileName
{
// 定义路径 NSString *path = [[NSBundle mainBundle]pathForResource:fileName ofType:nil];
// 定义URL NSURL *url = [NSURL fileURLWithPath:path];
// 定义请求 NSURLRequest *request = [NSURLRequest requestWithURL: url];
// 定义响应 NSURLResponse *response = nil;
// 发送同步请求 [NSURLConnection sendSynchronousRequest:request returningResponse:&response
error:nil];
NSLog(@"MIMEType is %@", [response MIMEType]);
return [response MIMEType]; }
{
// 定义路径 NSString *path = [[NSBundle mainBundle]pathForResource:fileName ofType:nil];
// 定义URL NSURL *url = [NSURL fileURLWithPath:path];
// 定义请求 NSURLRequest *request = [NSURLRequest requestWithURL: url];
// 定义响应 NSURLResponse *response = nil;
// 发送同步请求 [NSURLConnection sendSynchronousRequest:request returningResponse:&response
error:nil];
NSLog(@"MIMEType is %@", [response MIMEType]);
return [response MIMEType]; }
UIWebView演练——准备项目介绍
准备项目说明
• gotoURLString方法由文本框回车事件调用,为了 方便用户加载本地文件
UIWebView演练(1)——gotoURL方法
// 访问指定的URL内容 - (void)gotoURL:(NSURL *)url {
// 使用URL字符串替代URL文本框 [_urlText setText:[url absoluteString]];
// 定义请求
NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 设置数据检测类型 [_webView setDataDetectorTypes:UIDataDetectorTypeAll];
// 加载请求//转载请注明出处--本文永久链接:http://www.cnblogs.com/ChenYilong/p/3495622.html
[_webView loadRequest:request]; }
UIWebView——访问网站和加载本地HTML文件
UIWebView——加载本地文本文件和Word文档
UIWebView——加载本地PDF文件
UIWebView演练(2)——loadHTMLString方法 // 测试加载HTML字符串
NSString *html = @"<html><head><title>Hello</title></ head><body><h1>Hello Itcast</h1></body></html>";
[_webView loadHTMLString:html baseURL:nil];
// 测试加载部分HTML字符串,不需要显示整个网页内容时,通常使用此方法 NSString *partHtml = @"<h1>Hello Itcast</h1>";
[_webView loadHTMLString:partHtml baseURL:nil];
UIWebView演练(3)——loadData方法
// 测试加载本地PDF,需要指定MIMETYPE ......
[_webView loadData:[NSData dataWithContentsOfFile:dataPath] MIMEType:@"application/pdf" textEncodingName:@"UTF-8" baseURL:nil];
// 测试加载本地文本文件,需要指定MIMETYPE ......
[_webView loadData:[NSData dataWithContentsOfFile:dataPath] MIMEType:@"text/plain" textEncodingName:@"UTF-8" baseURL:nil];
// 测试加载本地HTML文件,需要指定MIMETYPE
//转载请注明出处--本文永久链接:http://www.cnblogs.com/ChenYilong/p/3495622.html
......
NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle]resourcePath] isDirectory:YES];
[_webView loadData:[NSData dataWithContentsOfFile: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 = [_webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
NSLog(@"url %@", url);
// 获取当前页面的标题 NSString *title = [_webView
stringByEvaluatingJavaScriptFromString:@"document.title"]; NSLog(@"title %@", title);
// 提交表单
[_webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "];
本节知识点回顾
• UIWebView是内置浏览器控件,能够加载html、pdf、txt等多种格式文件
• 常用加载方法: – loadRequest:
– loadHTMLString:baseURL:
– loadData:MIMEType:textEncodingName:baseURL:
• 常用导航方法:
– goBack – 回退
– goForward – 前进
– reload - 重载
– stopLoading - 取消载入内容
• 常用属性:
– scalespageToFit – 自动对页面进行缩放以适应屏幕
– dataDetectorTypes - 设定电话号码、网址、电子邮件和日期等文字变为链接文字
• 浏览器通过MIME标志符可以知道使用哪种插件读取相关文件 • iOS可以直接调用js代码与页面通讯
......
NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle]resourcePath] isDirectory:YES];
[_webView loadData:[NSData dataWithContentsOfFile: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 = [_webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
NSLog(@"url %@", url);
// 获取当前页面的标题 NSString *title = [_webView
stringByEvaluatingJavaScriptFromString:@"document.title"]; NSLog(@"title %@", title);
// 提交表单
[_webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "];
本节知识点回顾
• UIWebView是内置浏览器控件,能够加载html、pdf、txt等多种格式文件
• 常用加载方法: – loadRequest:
– loadHTMLString:baseURL:
– loadData:MIMEType:textEncodingName:baseURL:
• 常用导航方法:
– goBack – 回退
– goForward – 前进
– reload - 重载
– stopLoading - 取消载入内容
• 常用属性:
– scalespageToFit – 自动对页面进行缩放以适应屏幕
– dataDetectorTypes - 设定电话号码、网址、电子邮件和日期等文字变为链接文字
• 浏览器通过MIME标志符可以知道使用哪种插件读取相关文件 • iOS可以直接调用js代码与页面通讯
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址(2013年12月29日更新版)
作者:
出处:http://www.cnblogs.com/ChenYilong/(点击RSS订阅)
本文版权归作者和博客园共有,欢迎转载,
但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。