iOS UIWebView 的下拉刷新和上拉加载的实现

iOS UIWebView 的下拉刷新和上拉加载的实现

UIWebView也是可以添加下拉刷新和上拉加载的,只是不能直接添加在UIWebView的头部和尾部,而是在UIWebView内部有一个属性叫scrollView 属性。我门要把下拉刷新和上拉加载添加到webView.scrollView 的头部和尾部。

下面我简单的说一说iOS UIWebView 的下拉刷新和上拉加载的实现。

首先导入第三方库:
MJRefresh

添加头文件:
#import "MJRefresh.h"

添加代理:
@interface ViewController ()<UIWebViewDelegate>

声明全局变量:
@property (nonatomic, strong) UIWebView *webView;//网页

懒加载创建webView:
- (UIWebView *)webView{

    if (!_webView) {

        UIWebView *webView = [[UIWebView alloc] initWithFrame: CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height-64)];
        webView.backgroundColor = [UIColor whiteColor];
        webView.delegate = self;

        //如果你导入的MJRefresh库不是最新的库,就用下面的方法创建下拉刷新和上拉加载事件
        webView.scrollView.header = [MJRefreshNormalHeaderheaderWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)];
        webView.scrollView.footer = [MJRefreshAutoNormalFooterfooterWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)];

        //如果你导入的MJRefresh库是最新的库,就用下面的方法创建下拉刷新和上拉加载事件
        webView.scrollView.mj_header = [MJRefreshNormalHeaderheaderWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)];
        webView.scrollView.mj_footer = [MJRefreshAutoNormalFooterfooterWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)];
        [self.view addSubview:webView];
        self.webView = webView;


    }
    return _webView;
}

#pragma mark - 下拉刷新
- (void)headerRefresh{

    [self loadData];
}

#pragma mark - 上拉加载
- (void)footerRefresh{

//注意如果此处使用调用js方法加载下一页,需要在调用后直接执行    [self endRefresh];
//是因为调用JS加载web数据无法监测是否完成加载,所以会导致  footerRefresh 只执行一次
//static NSInteger PageIndex = 1;  设置全局加载页数,并在每次执行headerRefresh  时PageIndex = 1;最后记得销毁 - (void)dealloc {  PageIndex = 1;}


    PageIndex = PageIndex  + 1 ;
    NSString * jsStr = [NSString stringWithFormat:@"LoadData('%ld')",(long)PageIndex];
     [_webView stringByEvaluatingJavaScriptFromString:jsStr];
     [self endRefresh];

//正常调用网页如下:
    [self loadData];


}

#pragma mark - 结束下拉刷新和上拉加载
- (void)endRefresh{

    //当请求数据成功或失败后,如果你导入的MJRefresh库不是最新的库,就用下面的方法结束下拉刷新和上拉加载事件
    [self.webView.scrollView.header endRefreshing];
    [self.webView.scrollView.footer endRefreshing];

    //当请求数据成功或失败后,如果你导入的MJRefresh库是最新的库,就用下面的方法结束下拉刷新和上拉加载事件
    [self.webView.scrollView.mj_header endRefreshing];
    [self.webView.scrollView.mj_footer endRefreshing];

}


#pragma mark - 加载网页
- (void)loadData{

    NSString *urlString =@"http://XXXXXXX";

    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
}

#pragma mark - UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationTyp{

    return YES;
}
- (void)webViewDidStartLoad:(UIWebView *)webView{

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}

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

    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

    [self endRefresh];
}

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

    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

    [self endRefresh];
}


到这里,你就实现了UIWebView 的下拉刷新和上拉加载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值