我的應用使用WKWebView來呈現html字符串。 WkWebView嵌入在scrollView中,因爲我有其他幾個元素(例如按鈕,tableViews)。因此,我需要計算WkWebvView內容的大小,併爲此使用evaluateJavaScript(「document.body.scrollHeight」,completionHandler:方法。 每當我在html字符串中嵌入推文時,內容高度計算錯誤並且我的webview切一塊其高度的iOS WKWebView在嵌入鳴叫時計算高度不正確
已鳴叫嵌入這個樣子的HTML字符串的一部分:
<blockquote class=\"twitter-tweet\" data-lang=\"en\"><p><a href=\"https://twitter.com/hashtag/SYRIA?src=hash\">#SYRIA</a> Admiral Essen frigate launched <a href=\"https://twitter.com/hashtag/Kalibr?src=hash\">#Kalibr</a> cruise missiles against ISIS objects near Deir ez-Zor <a href=\"https://BLABLA*\">pic.twitter.com/azHAIii07g</a></p><p>— Минобороны России (@mod_russia) <a href=\"https://twitter.com/mod_russia/status/905007557554700288\">September 5, 2017</a></p></blockquote><p><script src=\"https://platform.twitter.com/widgets.js\"></script>
(BLABLA *實際上是t.co/azHAIii07g,我曾因爲計算器來代替規則)
是t這裏的東西缺少這個twitter代碼,或者我應該在webview方法中設置一些東西?
我試着從這篇文章實施解決方案:iOS Calculate correct WKWebview height for html string with embeded tweet但沒有成功,或者至少我能找出答案。
任何意見是讚賞??
更新: 我砍了一點點,發現可怕的解決方法,但它是問題出在哪裏的好主角。 這是全功能的,我使用的計算高度:
`func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
self.webViewx.evaluateJavaScript("document.readyState", completionHandler: {
[weak self] (complete, error) in
if complete != nil { self?.webViewx.evaluateJavaScript("document.body.offsetHeight", completionHandler: {
[weak self] (height, error) in
})
}`
如果我把:
`DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+1, execute: {
self?.webViewx.evaluateJavaScript("document.body.offsetHeight", completionHandler: {
[weak self] (height, error) in
print("HEIGHT AFTER 1 sec", height)
})
})`
我得到正確的高度後1秒。現在,如何在正確的時間後更新高度?另外,一方面,如果我已經嵌入Facebook或Instagram的帖子,一切正常,因爲它應該和webview的高度得到正確的計算。