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
- iOS 记住网页(UIWebView)上次浏览的位置
- 让FoxitReader记住上次浏览的位置
- 让Adobe Reader记住上次浏览的位置
- vim记住上次编辑和浏览位置
- listview记住上次滑动的位置
- listview记住上次滑动的位置
- vim记忆上次浏览文件的位置
- vim记住上次打开位置
- ~/.viminfo权限引起的vim无法记住上次编辑的位置(附vim配置文件)
- 让ListView记住上次滑动到的位置
- ubuntu12.04不能记住上次编辑位置的解决方案
- Android让ListView记住上次滑动到的位置
- .viminfo权限引起的vim无法记住上次编辑位置
- Android让ListView记住上次滑动到的位置
- UIWebView 的基本用法 浏览网页
- 新页面中返回到上次浏览的页面位置
- 记住上次的滚动条的位置,下次打开直接在哪个位置
- windows客户端开发--使你的客户端运行时记住上次关闭的大小和位置
- 《大话数据结构》
- 在Windows环境给Oracle打补丁
- 杭电OJ 2001
- Android关于OnTouch 和OnClick同时调用冲突的解决方案
- Thymeleaf 之 内置对象、定义变量、URL参数及标签自定义属性
- iOS 记住网页(UIWebView)上次浏览的位置
- 自定义网桥
- Warning:Gradle version 2.10 is required. Current version is 2.4. If using the gradle wrapper, try ed
- cxf和spring开发web service--服务器端
- 《大话数据结构》
- 百度云网盘下载无反应javascript:void(0)救急办法
- Swift 3.0 label富文本
- ubuntu删除文件的命令
- dubbo中的多播multicast://224.5.6.7:1234