Я использую WKWebView
с loadHTMLString
методом. и используя следующий код для оценки JavaScript
.
webView.evaluateJavaScript(
"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(Int(textSize))%'", completionHandler: { (result, err) in
if result != nil {
if let _ = self.delegate {
webView.frame.size.height = 1
webView.contentMode = .scaleAspectFit
webView.evaluateJavaScript("var meta = document.createElement('meta');" +
"meta.name = 'viewport';" + " " +
"meta.content = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no';" +
"var head = document.getElementsByTagName('head')[0];" + "head.appendChild(meta);", completionHandler: { (result, error) in
webView.evaluateJavaScript("document.documentElement.scrollHeight", completionHandler: { (height, error) in
let h = height as! CGFloat
let fittingHeight = h * 1.1
self.webKit.frame = CGRect(x: 21, y: 256, width: 269, height: fittingHeight)
self.scrollView.contentSize = CGSize(width: 304, height: fittingHeight)
self.webKitHeightCons.constant = fittingHeight
self.webKit.isUserInteractionEnabled = true
})
})
}
}
})
, но взаимодействие WKWebView
автоматически отключается после присвоения значения постоянной высоты.
self.webKitHeightCons.constant = fittingHeight
Я также использую self.webKit.isUserInteractionEnabled = true
сразу после self.webKitHeightCons.constant = fittingHeight
, но она все еще не работает ... я не понимаю, какова связь между константой высоты и взаимодействием с пользователем.
следующий код используется для нажатия на событие в WKWebView
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: ((WKNavigationActionPolicy) -> Void)) {
switch navigationAction.navigationType {
case .linkActivated:
if let _ = delegate {
delegate?.shouldStartLoadWith(url: navigationAction.request.url!)
}
decisionHandler(.cancel)
return
default:
break
}
decisionHandler(.allow)
}