iOS开发之UIWebView(一)

UIWebView:

是iOS内置的浏览器控件,系统自带的Safar浏览器就是通过UIWebView实现的

它不但能加载远程的网页资源,还能加载绝大部分的常见文件,如:

html/htm、pdf、doc、ppt、txt、mp4等

UIWebView加载资源的方法:

- (void)loadRequest:(NSURLRequest *)request;// 加载某个请求

UIWebView的常用属性和方法:

- (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) BOOL scalesPageToFit;

UIWebView在加载资源的时候,还可以设置代理来监听加载的过程, 成为UIWebView的代理,遵守UIWebViewDelegate协议,就能监听UIWebView的加载过程

// 开始发送请求(加载数据)时调用这个方法
- (void)webViewDidStartLoad:(UIWebView *)webView;

// 请求完毕(加载数据完毕)时调用这个方法
- (void)webViewDidFinishLoad:(UIWebView *)webView;

// 请求错误时调用这个方法
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;

// UIWebView在发送请求之前,都会调用这个方法,如果返回NO,代表停止加载请求,返回YES,代表允许加载请求
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

下面具体使用上述的属性和方法,如下:

1.加载远程网络资源,含有回退、前进功能

/**
 *  加载远程网络资源
 */
- (void)loadBaidu {
    // 使用webView加载远程资源
    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    NSURLRequest *reqeust = [NSURLRequest requestWithURL:url];
    
    // 设置webView的代理
    self.webView.delegate = self;
    // 加载资源
    [self.webView loadRequest:reqeust];
    
    // 默认回退、前进按钮不可点击
    self.backItem.enabled = NO;
    self.forwardItem.enabled = NO;
    
    // 设置伸缩内容至屏幕尺寸
    //    self.webView.scalesPageToFit = NO;
}

#pragma mark - UIWebViewDelegate
/**
 *  webView在发生请求request之前,会调用该方法,询问是否可以加载该请求request,YES:可以加载,NO:不可以加载
 */
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    
    
    return YES;
    
}
/**
 *  完成加载时调用
 */
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"webViewDidFinishLoad---");
    
    // 控制回退、前进按钮是否可以点击
    self.backItem.enabled = [self.webView canGoBack];
    self.forwardItem.enabled = [self.webView canGoForward];
}
/**
 *  开始加载时调用
 */
- (void)webViewDidStartLoad:(UIWebView *)webView {
    NSLog(@"webViewDidStartLoad---");
}

/**
 *  加载出错时调用
 */
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    NSLog(@"didFailLoadWithError---");
}
/**
 *  返回上一页面(上一个页面要存在)
 */
- (IBAction)forwardClick:(id)sender {
    [self.webView goForward];
}


/**
 *  进入下一个页面(下一个页面要存在)
 */
- (IBAction)backCLick:(id)sender {
    [self.webView goBack];
    
}
运行效果:(注意两个按钮都是可以使用的)

             


2.加载本地资源

/**
 *  加载本地其他资源,如html/htm、txt、doc等
 */
- (void)loadLocal {
    
    // 加载本地资源的URL路径
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"华为编程规范.doc" withExtension:nil];
    NSURLRequest *reqeust = [NSURLRequest requestWithURL:url];
    
    // 设置webView的代理
    self.webView.delegate = self;
    // 加载资源
    [self.webView loadRequest:reqeust];
    
}

#pragma mark - UIWebViewDelegate
/**
 *  webView在发生请求request之前,会调用该方法,询问是否可以加载该请求request,YES:可以加载,NO:不可以加载
 */
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    
    
    return YES;
    
}
/**
 *  完成加载时调用
 */
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"webViewDidFinishLoad---");
    
    // 控制回退、前进按钮是否可以点击
    self.backItem.enabled = [self.webView canGoBack];
    self.forwardItem.enabled = [self.webView canGoForward];
}
/**
 *  开始加载时调用
 */
- (void)webViewDidStartLoad:(UIWebView *)webView {
    NSLog(@"webViewDidStartLoad---");
}

/**
 *  加载出错时调用
 */
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    NSLog(@"didFailLoadWithError---");
}
运行效果:


UIWebView的简单使用就介绍到这里。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值