当前位置:   article > 正文

IOS中的WebView_ios webview

ios webview

IOS系统提供了 UIWebView 控件,从而可以方便地集成与网页相关的多种应用,该控件内置浏览器控件,可以用来浏览网页、打开文档等等。

 

一、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

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 方法实现本功能:        

  • - (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. 表单提交

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('xxxx').innerHTML; "] 获取指定标签元素的HTML代码

    3. 再使用 loadHTMLString 加载该HTML代码,即可


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/109498
推荐阅读
相关标签
  

闽ICP备14008679号