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

来源:互联网 发布:淘宝app怎么看卖家信誉 编辑:程序博客网 时间:2024/06/08 10:55
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 的下拉刷新和上拉加载
原创粉丝点击