(五十九)iOS网络基础之UIWebView简易浏览器实现

【UIWebView网络浏览器】

通过webView的loadRequest方法可以发送请求显示相应的网站,例如:

NSURL *url = [NSURL URLWithString:@""];// 创建请求数据NSURLRequest *request = [NSURLRequest requestWithURL:url];// 向服务器发送请求[self.webView loadRequest:request];通过使用searchBar,可以实现网址的输入,searchBar有一个delegate属性可以将控制器设为其代理,下面实现了一个简易的浏览器。

首先是调用代理方法来监听搜索按钮:

– (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{[self.view endEditing:YES];[self searchWithNSStringUrl:searchBar.text];}然后实现搜索栏信息的解析,注意没有要补全的逻辑方法:

使用NSStringFromRange方法可以实现字符串的子串位置查找,通过判断range的location成员是否等于NSNotFound可以判断是否匹配失败。

– (void)searchWithNSStringUrl:(NSString *)surl{NSRange range = [surl rangeOfString:@""];NSLog(@"range = %@",NSStringFromRange(range));if (range.location == NSNotFound) {NSString *head = @"";surl = [head stringByAppendingString:surl];}NSURL *url = [NSURL URLWithString:surl];// 创建请求数据NSURLRequest *request = [NSURLRequest requestWithURL:url];// 向服务器发送请求[self.webView loadRequest:request];}

直接判断字符串是否以某字符串开头可以直接使用NSString的hasPrefix:方法。

前进和后退的实现:

直接将按钮的前进和后退事件和按钮绑定。

一些细节:

1.在不能后退和前进时应该将按钮禁用,不同页面是通过链表连接的。

判断的方式:通过判断webView的链表,也可以通过canGoBack和canGoForward两个BOOL变量来判断。

2.地址栏应该随着网页内容而改变,通过获取WebView的URL,,并通过absoluteString方法转为字符串:

– (void)webViewDidStartLoad:(UIWebView *)webView{NSURL *url = webView.request.URL;NSString *surl = [url absoluteString];self.searchBar.text = surl;}使用HTML:

PhoneGap是基于HTML 5开发的一套框架,只要会做网页就可以开发应用,但是不能使用原生的硬件。

好处是可以一次性开发多个平台的应用。

【利用UIWebView加载文件】

可以通过Bundle或者沙盒加载。

传入文件的URL即可加载doc、txt、图片、pdf等各种内容。

例如读入一本pdf:

NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"English.pdf" withExtension:nil];NSURLRequest *request = [NSURLRequest requestWithURL:fileURL];[self.webView loadRequest:request];还可以通过dataDetectorTypes来设定需要高亮链接的文本类型:例如电话、地址、邮箱等

_webView.dataDetectorTypes = UIDataDetectorTypeAll;【利用UIWebView加载HTML】

[self.webView loadHTMLString:@"<h1>hello</h1>" baseURL:nil];利用这个功能可以实现删除广告等功能。

【UIWebView能够加载文件的原因】

MIME type是一个互联网标准,服务器将MIME标识符放入传送的数据中告诉浏览器使用哪种插件读取相关文件,MIME类型可以包含视频、图像、文本等数据。

网络通过二进制数据流来传输数据,客户端通过MIME type能够知道如何处理接收的数据。

却坐在不足一平米的椅子上。

(五十九)iOS网络基础之UIWebView简易浏览器实现

相关文章:

你感兴趣的文章:

标签云: