iOS开发

WKWebView的位置问题

2019-11-20  本文已影响0人  Mrfengzi

最近项目把UIWebView替换成WKWebView,其他的都还挺顺利基本上资料还都挺全的,不过发现一个问题:当实现webView的ScrollowView的

- (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的封装,本文中self都是指WKWebView

上一篇 下一篇

猜你喜欢

热点阅读