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{
[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://blog.csdn.net/wwc455634698/article/details/53005676";
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 的下拉刷新和上拉加载