iOS中UIWebView的介绍及用法

建立网络连接步骤
确定URL:明确要访问的网络资源
建立网络请求(URLRequest)
讲请求发送(NSURLConnection、NSURLSession)给服务器
处理服务器返回的数据(代理、block回调)

UIWebView
UIWebView是iOS内置的浏览器控件,可以浏览网页、打开文档等。
能够加载html、htm、pdf、docx、txt等格式的文件。
系统自带的safari浏览器就是通过UIWebView实现的。
在iOS7之前,UILabel、UITextField、以及UITextView都在后台以某种方式使用WebKit进行文本布局和渲染的。

渲染:是CG的最后一道工序,将所设计内容制作成最终效果图或者动画的过程。


UIWebView演练
*加载百度首页
//1.确定要访问的网络资源-URL
NSURL *url = [NSURL  URLWithString:@“http://www.baidu.com”];
//2.建立网络请求
NSURLRequest *request = [NSURLRequest  requestWithURL:url];
//3.UIWebView加载网络请求
[self.webView loadRequest:request];

*实现百度搜索
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
         NSString *str = searchBar.text;
        //1.判断是否以http://开头,如果没有就用百度搜索
        if(![str  hasPrefix:@“http://“]){
                str = [NSString  stringWithFormat:@“http://www.baidu.com/s?word=%@“,str];
        }
        //2.在URL中,如果包含了文中字符串,需要将字符串转换为带百分号的格式
        NSURL *url = [NSURL URLWithString:[str  strByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        ……
}
UIWebView加载文件
UIWebView还可以加载Bundle或者沙盒中的文件


关于MIME type
MIME英文全程”Multipurpose Internet Mail Extensions“多用途互联网邮件扩展,是一个互联网标准,最早应用于电子邮件系统,后来应用到浏览器。
服务器通过说明多媒体数据的MIME类型,告诉浏览器发送的多媒体数据的额类型,从而让浏览器知道接受的信息哪些是MP3文件,哪些是Shockwava文件等等。
服务器将MIME标识符放入传送的数据中告诉浏览器使用哪种插件读取相关文件。
*网络通过二进制数据流的方式可以传输任何格式的数据。
*客户端通过MIME type就能够知道如何处理接收到的数据。
URL & Request向服务器发送请求
Response响应,服务器告诉客户端返回的二进制数据的相关信息。


JS与Web之间的通讯
//获取当前页面的url
NSString *url=[_webView stringByEvaluatingJavaScriptFromString:@“document.location.href”];
//获取当前页面的标题
NSString *title = [_webView stringByEvaluatingJavaScriptFromString@“document.title”];
//提交表单
[_webView stringByEvaluatingJavaScriptFromString:@“document.form[0].submit();”];


自定义协议与OC进行交互
<a href=“js-call://loadUrl/m.baidu.com”>百度一下,你就知道!</a>
实现webView的
- webView:shouldStartloadViewRequest:navigationType:
代理方法
此代理方法会在webView将要跳转之前被触发
处理步骤:
拦截要跳转URL字符串
判断是否为自定义协议
如果是自定义协议,则拆分URL的剩余内容
动态生成SEL,并将剩余部分以参数形式传递给该方法

警告信息的处理
# pragma clang diagnostic push
#pragma clang diagnostic ignored “-Warc performSelector-leaks”
[self performSelector:fund withObject:[array[1]];
#pragma clang diagnostic pop


JS注入
[webView stringByEvaluatingJavaScriptFromString:@“var script = document.createElement(‘script‘);"
 "script.type = ‘text/javascript‘;"
 "script.text = \"function myFunction() { "
 "var field = document.getElementsByName(‘word‘)[0];"
 "field.value=‘iPhone‘;"
 "document.forms[0].submit();"
 "}\";"
 "document.getElementsByTagName(‘head‘)[0].appendChild(script);”];
[webView stringByEvaluatingJavaScriptFromString:@“myFunction();”];

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。