iOS WebView的用法

来源:互联网 发布:网络推广的工资有多少 编辑:程序博客网 时间:2024/05/11 19:07

一、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 = [resPathstringByAppendingPathComponent:@"Home.html"];
[webView loadHTMLString:[NSStringstringWithContentsOfFile:filePath]
  baseURL:[NSURLfileURLWithPath:[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. (voidwebViewDidStartLoad:(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.       
  10.     activityIndicator [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];    
  11.     [activityIndicator setCenter:view.center];    
  12.     [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];    
  13.     [view addSubview:activityIndicator];    
  14.   
  15.     [activityIndicator startAnimating]; 
  16. }
  17. (voidwebViewDidFinishLoad:(UIWebView *)webView  
  18.  
  19.     [activityIndicator stopAnimating];  
  20.     UIView *view (UIView*)[self.view viewWithTag:108];  
  21.     [view removeFromSuperview];  
  22.     NSLog(@"webViewDidFinishLoad");  
  23.  

三、UIWebView还可以通过 stringByEvaluatingJavaScriptFromString函数来执行 javascript代码,从而可以更加灵活地处理网页文件

  1. 获得UIWebView的标题
NSString *theTitle=[webViewstringByEvaluatingJavaScriptFromString:@"document.title"];

  2. 获取页面的URL

NSString*currentURL = [webViewstringByEvaluatingJavaScriptFromString:@"document.location.href"];

  3.修改页面元素的值

NSString*js_result = [webViewstringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='朱祁林';"];

  4.表单提交

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

 

四、综合运用以上方法,还可以实现部分网页的显示,基本思路如下:

    1.用 loadRequest 先获取网页,但先设置 UIWebView.hidden = YES;

    2.在 webViewDidFinishLoad 中,用

NSString*js_result2 = [webViewstringByEvaluatingJavaScriptFromString:@"document.getElementByIdx_x_x_xx_x_x('xxxx').innerHTML;"] 获取指定标签元素的HTML代码
    3.再使用 loadHTMLString 加载该HTML代码,即可

0 0
原创粉丝点击