如何在WKWebView中显示进度条及HTML的title

如何在WKWebView中显示进度条及HTML的title,第1张

WKWebView 的estimatedProgress和title 都是KVO模式,所以可以添加监听:

[webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:NULL];

[webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL];

监听的实现方法

- (void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary )change context:(void )context {

if ([keyPath isEqualToString:@"estimatedProgress"]) {

if (object == webView) {

[selfprogressView setAlpha:10f];

[selfprogressView setProgress:selfcurrentSubViewwebViewestimatedProgress animated:YES];

if(selfcurrentSubViewwebViewestimatedProgress >= 10f) {

[UIView animateWithDuration:03 delay:03 options:UIViewAnimationOptionCurveEaseOut animations:^{

[selfprogressView setAlpha:00f];

} completion:^(BOOL finished) {

[selfprogressView setProgress:00f animated:NO];

}];

}

}

else

{

[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];

}

}

else if ([keyPath isEqualToString:@"title"])

{

if (object == selfwebView) {

selftitle = selfwebViewtitle;

}

else

{

[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];

}

}

else {

[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];

}

}

进度条增加了动画,类似safari的进度效果

注意销毁时一定要移除监听

[webView removeObserver:self forKeyPath:@"estimatedProgress"];

[webView removeObserver:self forKeyPath:@"title"];

title是写在HTML信息里<header/>标签内容。我刚才又查了遍文档,UIWebView与UIWebViewDelegate都没有直接的方法获取〜

但也可以从另外的途径获取到它的Title:

1,可以先获取URL HTML的内容,提取title再用UIWebView的 "– loadHTMLString:baseURL: " 方法加载此页面。

2,每个页面添加上一个JS角本,加载完后,跳转到另一个页面,这个页面的URL加上本页title的信息。用UIWebViewDelegate的"- (BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType" 方法获取title,返回NO就可以了。

有时候项目小,为了省事,是会App内全嵌套H5的,但为了使用户体验更好,App内也会做一些修改

1在webView初始化时则循环去掉水平及竖直滑动条

2每次页面加载完成,均会调用webViewDidFinishLoad代理方法,在此判断链接是否是首页,如果是首页则不显示左上角按钮,否则显示

这里非常卡顿,尤其是界面第一次加载时特别缓慢,造成的用户使用效果就是:界面显示出好一会了,左上角的按钮才会出现或者消失

3在点击左上角返回按钮时,判断当前WebView是否可以返回,如果可以直接返回,如果不可以直接跳回首页面

区别

1需要导入头文件

2没有获取title,是自己写死的

1因为后续涉及了分享,分享出去的标题不能是写死的,需要获取H5的title

2需要有进度条

3当用户初次安装打开首页的时候(此时H5已经请求了),会d出是否使用数据,当你未选择的时候,H5是停止请求的空白的页面,当选择了允许,但H5已经停止了请求,所以必须加一个下拉刷新

4H5中有跳转AppStore的链接,WKWebView不会自动识别并去跳转

1为对象属性注册观察者

observer: 观察者对象

keyPath: 被观察的属性,其不能为nil

options: 设定通知观察者时传递的属性值,是传改变前的呢,还是改变后的

context: 一些其他的需要传递给观察者的上下文信息,通常设置为nil

2观察者接收通知,并做出处理:观察者通过实现下面的方法,完成对属性改变的响应

keyPath: 被观察的属性,其不能为nil

object: 被观察者的对象

change: 属性值,根据上面提到的Options设置,给出对应的属性值

context: 上面传递的context对象。

3移除观察者

以上就是关于如何在WKWebView中显示进度条及HTML的title全部的内容,包括:如何在WKWebView中显示进度条及HTML的title、如何监听uiwebview加载的html中title的变化、iOS前端交互篇-H5全嵌套等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9716907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存