WKWebView的位置问题
最近项目把UIWebView替换成WKWebView,其他的都还挺顺利基本上资料还都挺全的,不过发现一个问题:当实现webView的ScrollowView的
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
代理的时候,发现网页滑动的时候屏幕之外的地方都是白屏闪现,感觉渲染出现问题,就去网上查了好久,发现这个问题的资料好少。最后看到一篇文章分析的挺好
https://www.jianshu.com/p/1d739e2e7ed2
感觉问题相似就想直接使用他的这个方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
if ([[self respondsToSelector:@selector(_updateVisibleContentRects)]) {
((void(*)(id,SEL,BOOL))objc_msgSend)([self,@selector(_updateVisibleContentRects),NO);
}
#pragma clang diagnostic pop
..........
}
但是还是怕使用私有API被拒。
也想到直接使用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
[self setNeedsLayout];
..........
}
但是发现使用之后webView的上拉下拉效果失效,也怕影响性能
最后还是多改几行代码使用KVO监控scrollView(明明打印的self.scrollView.bounces一直是YES,有时间研究下webView的弹簧效果为啥失效)
NSString *const TPKeyPathContentOffset = @"contentOffset";
NSKeyValueObservingOptions options = NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld;
[self.scrollView addObserver:self forKeyPath:TPKeyPathContentOffset options:options context:nil];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:TPKeyPathContentOffset]) {
}
}
}-(void)dealloc
{
[self.scrollView removeObserver:self forKeyPath:TPKeyPathContentOffset];
}
【WKWebView的位置问题】由于我粘贴的代码是项目中WKWebView的封装,本文中self都是指WKWebView
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量