一、UIWebView 可以載入和顯示某個URL的網頁,也可以顯示基於HTML的本地網頁或部分網頁:

a. 載入 URL

  1. WebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 400)];
  2. NSString *path = @"http://www.baidu.com";
  3. NSURL *url = [NSURL URLWithString:path];
  4. [WebView loadRequest:[NSURLRequest requestWithURL:url]];

b. 載入 HTML

NSBundle *bundle = [NSBundle mainBundle];
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 方法實現本功能:

  1. - (void) webViewDidStartLoad:(UIWebView *)webView
  2. {
  3. //建立UIActivityIndicatorView背底半透明View
  4. UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
  5. [view setTag:108];
  6. [view setBackgroundColor:[UIColor blackColor]];
  7. [view setAlpha:0.5];
  8. [self.view addSubview:view];
  9. activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
  10. [activityIndicator setCenter:view.center];
  11. [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
  12. [view addSubview:activityIndicator];
  13. [activityIndicator startAnimating];
  14. }
  15. - (void) webViewDidFinishLoad:(UIWebView *)webView
  16. {
  17. [activityIndicator stopAnimating];
  18. UIView *view = (UIView*)[self.view viewWithTag:108];
  19. [view removeFromSuperview];
  20. NSLog(@"webViewDidFinishLoad");
  21. }

三、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.
表單提交

NSString
*js_result2 = [webView
stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit();
"]

四、綜合運用以上方法,還可以實現部分網頁的顯示,基本思路如下:

1.
用 loadRequest 先獲取網頁,但先設定 UIWebView.hidden = YES;

2.
在 webViewDidFinishLoad 中,用

NSString
*js_result2 = [webView
stringByEvaluatingJavaScriptFromString:@"document.getElementByIdx_x_x_xx_x_x('xxxx').innerHTML;
"] 獲取指定標籤元素的HTML程式碼
    3.
再使用 loadHTMLString 載入該HTML程式碼,即可