我开发了一个应用程序,它使用 Swift 中的 WKWebView 显示网页。我需要禁用用户选择和标注(因为网络加载图表),但我找不到任何方法可以使用 WKWebView 执行此操作。
这是我的代码:
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://danfg95glucose.azurewebsites.net")
let request = URLRequest(url: url!)
webView.navigationDelegate = self
webView.load(request)
}
}
我想做一些类似的事情,但在 Swift 中使用 WKWebView:
// Disable user selection
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"];
// Disable callout
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];
是否可以?
这是显示问题的图像:
非常感谢您的回复。对于我的水平感到抱歉,我是新人,我正在学习编程。
您正在寻找的是添加this以编程方式将 css 添加到您的 WKWebView 中。
首先,在视图控制器上添加 WKWebView:
let webViewConfiguration = WKWebViewConfiguration()
let webView = WKWebView(frame: .zero, configuration: webViewConfiguration)
view.addSubview(webView)
webView.snp.updateConstraints { make in
make.edges.equalTo(view)
}
webView.navigationDelegate = self
webView.load(URLRequest(url: URL(string: "https://www.google.com")!))
然后,实现导航委托方法
optional public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
并在其中添加以下内容:
extension ExampleViewController: WKNavigationDelegate {
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let javascriptStyle = "var css = '*{-webkit-touch-callout:none;-webkit-user-select:none}'; var head = document.head || document.getElementsByTagName('head')[0]; var style = document.createElement('style'); style.type = 'text/css'; style.appendChild(document.createTextNode(css)); head.appendChild(style);"
webView.evaluateJavaScript(javascriptStyle, completionHandler: nil)
}
}
这样,您就可以使用禁用标注的 css 以编程方式添加样式标签。
希望能帮助到你!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)