对于UIWebView,我们可以通过以下方式获得内容高度:
[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"]
Run Code Online (Sandbox Code Playgroud)
但是WKWebView没有这个方法,webView.scrollView.contentSize.height不对.
(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
mor*_*ter 10
我用KVO解决了这个问题.
首先,addObserver for WKWebView的scrollView的contentSize如下:
addObserver(self, forKeyPath: "webView.scrollView.contentSize", options: .New, context: nil)
Run Code Online (Sandbox Code Playgroud)
接下来,收到这样的变化:
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
if keyPath == "webView.scrollView.contentSize" {
if let nsSize = change[NSKeyValueChangeNewKey] as? NSValue {
let height = nsSize.CGSizeValue().height
// Do something here using content height.
}
}
}
Run Code Online (Sandbox Code Playgroud)
获取webview的内容高度很容易.
不要忘记删除观察者:
removeObserver(self, forKeyPath: "webView.scrollView.contentSize", context: nil)
Run Code Online (Sandbox Code Playgroud)
我知道这条线deinit.
你可以这样得到它:
self.webview.navigationDelegate = self;
- (void)webView:(WKWebView *)webview didFinishNavigation:(WKNavigation *)navigation{
// webview.scrollView.contentSize will equal {0,0} at this point so wait
[self checkIfWKWebViewReallyDidFinishLoading];
}
- (void)checkIfWKWebViewReallyDidFinishLoading{
_contentSize = _webview.scrollView.contentSize;
if (_contentSize.height == 0){
[self performSelector:@selector(WKWebViewDidFinishLoading) withObject:nil afterDelay:0.01];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11446 次 |
| 最近记录: |