webView

一、简单介绍

1.简单说明

UIWebView是iOS内置的浏览器控件

系统自带的Safari浏览器就是通过UIWebView实现的

UIWebView不但能加载远程的网页资源,还能加载绝⼤部分的常见文件 html\htm pdf、doc、ppt、txt  mp4 ......


2.UIWebView常⽤的加载资源的方法

-(void)loadRequest:(NSURLRequest *)request;


3.常用的属性和方法

重新加载(刷新) - (void)reload;

停⽌止加载     - (void)stopLoading;

回退     - (void)goBack;

前进    - (void)goForward;

需要进⾏检测的数据类型   @property(nonatomic)UIDataDetectorTypes dataDetectorTypes 

是否能回退@property(nonatomic,readonly,getter=canGoBack) BOOL canGoBack;

是否能前进 @property(nonatomic,readonly,getter=canGoForward)BOOL canGoForward; 

是否正在加载中 @property(nonatomic,readonly,getter=isLoading) BOOL loading;

是否伸缩内容至适应屏幕当前尺寸 @property(nonatomic) BOOLscalesPageToFit; 

 

4.监听UIWebView的加载过程

成为UIWebView的代理,遵守UIWebViewDelegate协议,就能监听UIWebView的加载过程

开始发送请求(加载数据)时调用这个方法

-(void)webViewDidStartLoad:(UIWebView *)webView;

请求完毕(加载数据完毕)时调⽤这个方法

-(void)webViewDidFinishLoad:(UIWebView *)webView;

请求错误时调用这个方法

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;

 

在加载的过程中,如果所要加载的内容比较长,在加载的时候,就会不断的调用开始加载数据和完成加载数据的这两个函数,知道所要加载的内容完成为止;

 

5.监听UIWebView的加载过程

UIWebView在发送请求之前,都会调⽤用这个⽅方法,如果返回NO,代表停⽌止加载 请求,返回YES,代表允许加载请求

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType;

 

6.在代码中加入js

          UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS中与UIWebView中的网页元素交互。

如:NSString *title = [webview stringByEvaluatingJavaScriptFromString:@"document.title"];    

 

 

 

实例代码(具体请看:‘UI_web内容显示forIpad’  项目):

#import "WebContaintViewController.h"

 

@interface WebContaintViewController ()<UIWebViewDelegate>

@property (nonatomic, weak) UIWebView*webView;

@end

 

@implementation WebContaintViewController

 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self= [super initWithNibName:nibNameOrNilbundle:nibBundleOrNil];

    if(self) {

        //Custom initialization

    }

    return self;

}

 

- (void)viewDidLoad

{

    [super viewDidLoad];

    

    

    

}

 

- (void)loadView

{

    [superloadView];

    //创建一个UIWebView

    UIWebView*webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];

    

    self.webView = webView;

    

    //设置页面尺寸是否可以改变 yes为可以改变

    webView.scalesPageToFit = YES;

    

    //设置代理

    webView.delegate = self;

    

    [self.view addSubview:webView];

    //创建一个url

    NSURL*url = [NSURL URLWithString:@"http://www.baidu.com"];

    //创建一个url请求

    NSURLRequest*request = [NSURLRequest requestWithURL:url];

    

    //webView加载url请求

    [webView loadRequest:request];

    

    

}

 

// 隐藏掉状态栏

- (BOOL)prefersStatusBarHidden

{

    return YES;

}

 

#pragma -mark UIWebView 代理

 

/**

 *  开始加载页面的时候触发

 *

 *  @paramwebView 当前的webView

 */

- (void)webViewDidStartLoad:(UIWebView *)webView

{

    NSLog(@"开始加载页面!~");

}

 

/**

 *  页面加载完成

 */

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

 

    //判断是否还在加载,如果还在加载,则不执行加载完成后的操作

    if(NO == webView.loading){

        

        NSLog(@"页面加载完成,可以在这里处理html里面的元素");

        

        //只加载部分数据

        NSString*str = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('div').getElementsById('primary').outerHTML;"];

        

        NSLog(@"加载部分内容:%@",str);


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

        

        NSLog(@"url:%@",currentURL);

    }

 

}

 

/**

 *  页面请求失败的时候

 */

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

{

    NSLog(@"页面加载失败!~");

}

 

 

@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值