UIWebView中添加活动指示器,来化解用户等待心理

在UIWebView加载网页时,通过实现UIWebViewDelegate协议的方法,如webViewDidStartLoad、webViewDidFinishLoad和webViewDidFailLoadWithError,动态显示和隐藏活动指示器,以告知用户页面加载状态,提升用户体验。
摘要由CSDN通过智能技术生成


UIWebView中添加活动指示器,来化解用户等待心理

序言:

 在使用UIWebView中,在导入页面的过程中多少花费时间。为此,我们需要提醒用户当前正在进行数据导入,给用户展示“正在处理中。。。。”的提示。。


正文:

我们今天首先要看的是  友情快递:


友情快递:


UIWebViewDelegate协议中定义的状态监视方法

UIWebViewDelegate协议中定义的状态监视方法
方法名调用时机
-(void)webViewDidStartLoad:(UIWebView *)webView

内容读取开始后被调用
-(void)webViewDidFinishLoad:(UIWebView *)webView

内容读入结束后,被调用
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

内容读入过程中错误发生后被调用。可被多次调用
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

内容读入开始时被调用。此时,返回YES后,内容的读入将交给UIWebView;返回NO后,UIWebView不进行读入处理。  如果想在点击链接的时候进行独自返回NO,再次方法中进行处理。


开完这个友情快递,你们大概也能知道,上述序言里的功能,也可以实现。。。。


第二:

我们介绍思路。如下:

我们实现—(void)webViewDidStartLoad:(UIWebView *)webView方法、-(void)webViewDidFinishLoad:(UIWebView *)webView方法、-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error方法,在网络通信开始时活动指示器动画开始。通信结束或者发生错误动画停止。


第三:实现功能步骤如下:

1、首先创建两个对象和添加UIWebViewDelegate代理协议。

协议:

UIViewController<UIWebViewDelegate>

两个对象:

UIWebView*_ZSJwebView;//网页架子
    UIActivityIndicatorView*_ZSJActivity;
//活动指示器对象

2、我们实例化网页对象和将活动指示器添加到工具条内。

实例化网页对象

 // UIWebView的设置
    
    _ZSJwebView=[[UIWebView alloc]initWithFrame:self.view.bounds];
    _ZSJwebView.delegate=self;
    //UIWebView自动适应
    _ZSJwebView.autoresizingMask=UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
    
    _ZSJwebView.scalesPageToFit=YES;//让网页自动适合手机屏幕大小。
    [self.view addSubview:_ZSJwebView];
    

添加活动指示器到工具条内

 //添加活动指示器到工具条内
    
    
    _ZSJActivity=[[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 20, 250)];
    
    UIBarButtonItem*Indicator=[[UIBarButtonItem alloc]initWithCustomView:_ZSJActivity];
    
    UIBarButtonItem*adjustment=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    
    
    
    NSArray*buttons=[NSArray arrayWithObjects:Indicator,adjustment, nil];
    
    [self setToolbarItems:buttons animated:YES];
    

3、我们要在界面显示的时候,进行web网页的显示。


-(void)viewDidAppear:(BOOL)animated{
    
    
    
    [super viewDidAppear:animated];
    //Web的显示
    
    NSURLRequest*request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://blog.csdn.net/zhoushuangjian511"]];
    
    [_ZSJwebView loadRequest:request];
    
    
}

4、UIWebViewDelegate协议的几个方法的使用。


数据开始读入时,让活动指示器开始动画。。。

-(void)webViewDidStartLoad:(UIWebView *)webView{
    
    
    [_ZSJActivity    startAnimating];
}


数据读入完成后,让活动指示器动画停止。

-(void)webViewDidFinishLoad:(UIWebView *)webView{
    
    [_ZSJActivity  stopAnimating];
}

当数据读入时出错或者失败,让活动指示器停止。

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
    
    [_ZSJActivity stopAnimating];
}



我们的工作完成。。。。


效果展示:

   

          


完整代码:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UIWebViewDelegate>
{
    
    UIWebView*_ZSJwebView;
    UIActivityIndicatorView*_ZSJActivity;
    
}

@end





#import "ViewController.h"
#import "Mylabel.h"

@implementation ViewController
-(void)viewDidLoad{
    [super viewDidLoad];
    self.view.backgroundColor=[UIColor greenColor];
    self.title=@"明缺信息显示";
    
    
    
    [self makeUI];
}


-(void)makeUI
{

        //
   // UIWebView的设置
    
    _ZSJwebView=[[UIWebView alloc]initWithFrame:self.view.bounds];
    _ZSJwebView.delegate=self;
    //UIWebView自动适应
    _ZSJwebView.autoresizingMask=UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
    
    _ZSJwebView.scalesPageToFit=YES;//让网页自动适合手机屏幕大小。
    [self.view addSubview:_ZSJwebView];
    
    
    //添加活动指示器到工具条内
    
    
    _ZSJActivity=[[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(self.view.center.x-40, self.view.center.y-40, 80, 80)];
    _ZSJActivity.backgroundColor=[UIColor redColor];
    [self.view addSubview:_ZSJActivity];
    UIBarButtonItem*Indicator=[[UIBarButtonItem alloc]initWithCustomView:_ZSJActivity];
    
    UIBarButtonItem*adjustment=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    
    
    
    NSArray*buttons=[NSArray arrayWithObjects:adjustment, Indicator,adjustment,   nil];
    
    [self setToolbarItems:buttons animated:YES];
    
    
}



-(void)viewDidAppear:(BOOL)animated{
    
    
    
    [super viewDidAppear:animated];
    //Web的显示
    
    NSURLRequest*request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://blog.csdn.net/zhoushuangjian511"]];
    
    [_ZSJwebView loadRequest:request];
    
    
}



-(void)webViewDidStartLoad:(UIWebView *)webView{
    
    
    [_ZSJActivity    startAnimating];
}

-(void)webViewDidFinishLoad:(UIWebView *)webView{
    
    [_ZSJActivity  stopAnimating];
}

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
    
    [_ZSJActivity stopAnimating];
}

 @end










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值