一、UIWebView 可以載入和顯示某個URL的網頁,也可以顯示基於HTML的本地網頁或部分網頁:
a. 載入 URL
- WebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 400)];
- NSString *path = @"http://www.baidu.com";
- NSURL *url = [NSURL URLWithString:path];
- [WebView loadRequest:[NSURLRequest requestWithURL:url]];
b. 載入 HTML
NSString *resPath = [bundle resourcePath];
NSString *filePath = [resPath
stringByAppendingPathComponent:@"Home.html"];
[webView loadHTMLString:[NSString
stringWithContentsOfFile:filePath]
baseURL:[NSURL
fileURLWithPath:[bundle bundlePath]]];
二、使用網頁載入指示,載入完成後再顯示網頁出來
首先要指定委託方法:
webView.delegate =self;
UIWebView主要有下面幾個委託方法:
1、-
(void)webViewDidStartLoad:(UIWebView *)webView;開始載入的時候執行該方法。
2、-
(void)webViewDidFinishLoad:(UIWebView *)webView;載入完成的時候執行該方法。
3、-
(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError
*)error;加載出錯的時候執行該方法。
這樣,可以利用
webViewDidStartLoad 和 webViewDidFinishLoad 方法實現本功能:
- - (void) webViewDidStartLoad:(UIWebView *)webView
- {
- //建立UIActivityIndicatorView背底半透明View
- UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
- [view setTag:108];
- [view setBackgroundColor:[UIColor blackColor]];
- [view setAlpha:0.5];
- [self.view addSubview:view];
- activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
- [activityIndicator setCenter:view.center];
- [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
- [view addSubview:activityIndicator];
- [activityIndicator startAnimating];
- }
- - (void) webViewDidFinishLoad:(UIWebView *)webView
- {
- [activityIndicator stopAnimating];
- UIView *view = (UIView*)[self.view viewWithTag:108];
- [view removeFromSuperview];
- NSLog(@"webViewDidFinishLoad");
- }
三、UIWebView還可以通過 stringByEvaluatingJavaScriptFromString
函式來執行 javascript程式碼,從而可以更加靈活地處理網頁檔案
1. 獲得UIWebView的標題
NSString *theTitle=[webView
stringByEvaluatingJavaScriptFromString:@"document.title"];
2. 獲取頁面的URL
NSString
*currentURL = [webView
stringByEvaluatingJavaScriptFromString:@"document.location.href"];
3.
修改頁面元素的值
NSString
*js_result = [webView
stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='朱祁林';"];
4.
表單提交
*js_result2 = [webView
stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit();
"]
四、綜合運用以上方法,還可以實現部分網頁的顯示,基本思路如下:
1.
用 loadRequest 先獲取網頁,但先設定 UIWebView.hidden = YES;
2.
在 webViewDidFinishLoad 中,用
*js_result2 = [webView
stringByEvaluatingJavaScriptFromString:@"document.getElementByIdx_x_x_xx_x_x('xxxx').innerHTML;
"] 獲取指定標籤元素的HTML程式碼
再使用 loadHTMLString 載入該HTML程式碼,即可