【UIWebView網絡浏覽器】
通過webView的loadRequest方法可以發送請求顯示相應的網站,例如:
NSURL *url = [NSURL URLWithString:@"http://m.baidu.com"];
// 建立請求資料
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 向伺服器發送請求
[self.webView loadRequest:request];
通過使用searchBar,可以實作網址的輸入,searchBar有一個delegate屬性可以将控制器設為其代理,下面實作了一個簡易的浏覽器。
首先是調用代理方法來監聽搜尋按鈕:
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
[self.view endEditing:YES];
[self searchWithNSStringUrl:searchBar.text];
}
然後實作搜尋欄資訊的解析,注意沒有http://要補全的邏輯方法:
使用NSStringFromRange方法可以實作字元串的子串位置查找,通過判斷range的location成員是否等于NSNotFound可以判斷是否比對失敗。
- (void)searchWithNSStringUrl:(NSString *)surl{
NSRange range = [surl rangeOfString:@"http://"];
NSLog(@"range = %@",NSStringFromRange(range));
if (range.location == NSNotFound) {
NSString *head = @"http://";
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能夠知道如何處理接收的資料。
轉載于:https://www.cnblogs.com/aiwz/p/6154191.html