標籤:uiwebview ios
【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能夠知道如何處理接收的資料。
(五十九)iOS網路基礎之UIWebView簡易瀏覽器實現