iOS 记住网页(UIWebView)上次浏览的位置

来源:互联网 发布:全球潮汐软件下载 编辑:程序博客网 时间:2024/06/05 08:38

iOS  记住网页UIWebView上次浏览的位置


现在,我在独立开发一款iOS客户端App,当然里面也少不了对网页的加载。今天,我要实现的功能是:当进入UIWebView界面加载网址链接,加载网页完成时,如果我之前加载过该网页,我要提示用户上次浏览到的什么位置,并且让webView中的内容滚动到该位置显示。


下面,我说一下我实现该功能的思路第一,创建添加webView,加载网页;第二,使webView遵守UIWebViewDelegate,实现代理方法;第三,webView.scrollView遵守UIScrollViewDelegate,实现代理方法;第四,计算webView.scrollView的纵向方向的偏移量。


好了,不说那么多了,接下来就上代码了:

声明变量属性:

@property (nonatomic,strong) UIWebView *webView;//网页

@property (nonatomic,strong) UILabel *markLabel;//标记

@property (nonatomic,strong) NSString *urlString;//首次加载的链接地址

遵守代理:

@interfaceViewController()<UIWebViewDelegate,UIScrollViewDelegate>


创建添加webView:

- (UIWebView *)webView{

    

    if (!_webView) {

        

        UIWebView *webView = [[UIWebViewalloc] initWithFrame:CGRectMake(0,64, self.view.frame.size.width,self.view.frame.size.height-64)];

        webView.backgroundColor = [UIColorwhiteColor];

        webView.delegate =self;

        webView.scrollView.delegate =self;

        [self.viewaddSubview:webView];

        self.webView = webView;

        

        

    }

    return_webView;

}


创建添加现实标记的markLabel:

- (UILabel *)markLabel{

    

    if (!_markLabel) {

        

        UILabel *markLabel = [[UILabelalloc] initWithFrame:CGRectMake(0,64, self.view.frame.size.width,30)];

        markLabel.backgroundColor = [UIColorwhiteColor];

        markLabel.text =@"您上次浏览到此处,请继续阅读!";

        markLabel.textAlignment =NSTextAlignmentCenter;

        markLabel.textColor = [UIColorredColor];

        markLabel.font = [UIFontsystemFontOfSize:15.0f];

        markLabel.hidden =YES;

        [self.viewaddSubview:markLabel];

        self.markLabel = markLabel;

    }

    

    return_markLabel;

}



#pragma mark - 隐藏markLabel

- (void)markLabelHidde{

    

    self.markLabel.hidden =YES;

}



#pragma mark - 加载网页

- (void)loadData{

    

    self.urlString =@"http://blog.csdn.net/wwc455634698/article/details";

    NSURL *url = [NSURLURLWithString:self.urlString];

    NSURLRequest *request = [NSURLRequestrequestWithURL:url];

    [self.webViewloadRequest:request];

}



#pragma mark - UIWebViewDelegate

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationTyp{

    

    returnYES;

}

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

    

    [UIApplicationsharedApplication].networkActivityIndicatorVisible =YES;

}


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

    

    [UIApplicationsharedApplication].networkActivityIndicatorVisible =NO;

    

    if ([self.urlStringisEqualToString:webView.request.URL.absoluteString]) {

        CGFloat offsetY =0;

        offsetY = [[NSUserDefaultsstandardUserDefaults] floatForKey:@"jingjinzhuimengren"];

        [[NSUserDefaultsstandardUserDefaults] synchronize];

        

        if (offsetY) {

            

            self.markLabel.hidden =NO;

            [webView.scrollViewsetContentOffset:CGPointMake(0, offsetY)animated:NO];

            [selfperformSelector:@selector(markLabelHidde)withObject:selfafterDelay:1.0f];

        }

    }

}


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

    

    [UIApplicationsharedApplication].networkActivityIndicatorVisible =NO;

}



#pragma mark - UIScrollViewDelegate

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

    

    CGFloat offsetY = self.webView.scrollView.contentOffset.y;

    [[NSUserDefaultsstandardUserDefaults] setFloat:offsetY forKey:@"jingjinzhuimengren"];

    [[NSUserDefaultsstandardUserDefaults] synchronize];

}


@end


0 0
原创粉丝点击