天天看點

(五十九)iOS網絡基礎之UIWebView簡易浏覽器實作

【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:方法。

前進和後退的實作:

直接将按鈕的前進和後退事件和按鈕綁定。

(五十九)iOS網絡基礎之UIWebView簡易浏覽器實作

一些細節:

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