公司項目中的一個頁面設計成上部分原生,下面部分網頁,所以需要準確獲取網頁高度。
總結所有步驟
1.初始化WKWebView,并設置相關屬性。
2.實現(xiàn)WKNavigationDelegate代理方法,獲取網頁高度。
3.WKWebView的一些處理(禁用長按彈出框、監(jiān)聽通過JS調用警告框)
1.初始化WKWebView,并設置相關屬性。
//MARK:-設置webView的屬性
func setWebViewProperty() {
webView = WKWebView(frame: view.bounds)
if #available(iOS 11.0, *) {
webView.scrollView.contentInsetAdjustmentBehavior = .never
}
webView.isOpaque = false
webView.backgroundColor = UIColor.clear
webView.navigationDelegate = self
webView.uiDelegate = self //監(jiān)聽通過JS調用警告框
webView.scrollView.showsVerticalScrollIndicator = false
webView.scrollView.bounces = false //禁止彈回
view.addSubview(webView)
}
2.實現(xiàn)WKNavigationDelegate代理方法。
//MARK:****************WKNavigationDelegate****************
extension Xxxxxxxx: WKNavigationDelegate {
//頁面加載完成之后調用
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
weak var weakSelf = self
webView.evaluateJavaScript("Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight)") { (result, error) in
if result == nil { return }
let height = "\(result!)".floatValue()
weakSelf?.webView.frame.size.height = CGFloat(height)
}
}
}
3. WKWebView的一些處理(禁用長按彈出框、監(jiān)聽通過JS調用警告框)
// 禁用長按彈出框
webView.evaluateJavaScript(
"document.documentElement.style.webkitTouchCallout='none';",
completionHandler: nil)
//MARK:****************WKUIDelegate****************
extension Xxxxxxxx: WKUIDelegate {
// 監(jiān)聽通過JS調用警告框
func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {
MBProgressHUD.showSuccess(message)
completionHandler()
}
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。