iOS WebView的用法

转载 2013年12月05日 20:03:48

一、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>ponent:@"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.       
  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. - (void) webViewDidFinishLoad:(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=[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. 用>

    2. 在 webViewDidFinishLoad 中,用

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

iOS webView与H5的交互(返回页面的处理)

当在一个页面触发一个事件跳转到一个H5页面时,H5页面内部也可以进行下一级的跳转,这个时候我们导航栏使用苹果原生的返回按钮就需要处理页面中的返回效果。是返回到pushH5的上一级页面还是返回H5内部的...
  • qq_29284809
  • qq_29284809
  • 2016年01月20日 14:46
  • 19463

UIWebView js oc相互调用的三种方法

转自:http://www.jianshu.com/p/dbddfc0eaa26 JS oc相互调用方法: 1.利用定义url调用 2.利用js直接调用 3.利用js里对象调用 ...
  • Jason_chen13
  • Jason_chen13
  • 2016年12月09日 17:56
  • 2498

iOS开发,UIWebview与H5之间的交互

将HTML页面加载到UIWebview控件中: A:本地加载: NSString *webPath = [[NSBundle  mainBundle]pathForResource:@“Hel...
  • sszTechnology
  • sszTechnology
  • 2016年05月26日 14:57
  • 2608

iOS开发支付集成之微信支付

微信支付也是需要签名的,也跟支付宝一样,可以在客户端签名,也可以在后台签名(当然,为了安全还是推荐在服务器上做签名,逻辑也比较好理解)。 集成前首先要看看文档 ...
  • qq_34047841
  • qq_34047841
  • 2016年07月13日 09:47
  • 777

对iOS的UIWebView的封装,实现与html5的交互

近期做了个项目里面需要加载网页,里面要求点击网页然后ios可以响应,点击ios的界面可以调用html5的代 码。为了实现这个要求,并且尽量做到代码的复用就自己实现了个类继承自UIWebView。 ...
  • qq_30970529
  • qq_30970529
  • 2016年02月18日 17:09
  • 2924

UIWebView加载本地HTML5文件

UIWebView加载本地HTML5文件 一.准备HTML文件及其资源文件 使用UIWebView加载本地的HTML文件 index.html,在index.html中引用了本地的图片...
  • Kaitiren
  • Kaitiren
  • 2013年12月04日 11:16
  • 73260

webView网页中JS调原生OC方法与JS注入

在iOS开发中用到webView的话,经常会有和JS打交道的时候,下面介绍一下OC和JS的一种简单沟通的方式。 比如我们有一个下面这样的网页: html>   head>   ...
  • yujianxiang666
  • yujianxiang666
  • 2016年11月15日 20:05
  • 1683

iOS开发:给UIWebView导航栏添加返回与关闭按钮

在iOS开发中,不免有原生与H5的交互,比如说:从原生页面的一个按钮,点击之后跳转到了一个H5的页面A,A页面中又有一个按钮,点击之后,又加载了一个新的H5页面B,从B点击一个按钮,又加载一个新的H5...
  • Forever_wj
  • Forever_wj
  • 2016年12月30日 14:13
  • 2657

在iOS APP发起H5微信支付

场景介绍 H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。 主要用于触屏版的手机浏览器请求微信支付的场景。可以方...
  • qq_30746437
  • qq_30746437
  • 2018年01月11日 14:42
  • 61

IOS WebView中JS和OC相互调用

现在有很多项目中都涉及到HTML5,在一个普通的APP里面嵌入HTML5网页,嵌入的这些网页在服务器把页面修改之后同样也能跟着修改,这样就能很方便的修改程序的展示内容。如果使用tabelView或者其...
  • smg910326
  • smg910326
  • 2015年07月11日 11:53
  • 3582
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS WebView的用法
举报原因:
原因补充:

(最多只允许输入30个字)