ios - 如何在 Swift 的 WKWebView 中禁用用户选择?

标签 ios swift xcode webview wkwebview

我开发了一个应用程序,它在 Swift 中使用 WKWebView 显示网页。我需要禁用用户选择和标注(因为 Web 会加载图表),但我找不到任何方法来使用 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';"];

这可能吗?

这是显示问题的图像:

enter image description here

非常感谢您的回复。对不起我的水平,我是新手,正在学习编程。

最佳答案

您要查找的是添加 this以编程方式将 CSS 添加到您的 WKWebView。

首先,在您的 View Controller 上,添加 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")!))

然后,实现导航委托(delegate)方法

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 以编程方式添加样式标签。

希望对您有所帮助!

关于ios - 如何在 Swift 的 WKWebView 中禁用用户选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48467723/

相关文章:

ios - NSFetchRequest - 从关系中获取实体

ios - 核心数据和连接条件后的排序

xcode - 未找到此可执行文件的有效配置文件 IOS 12 但仍在 IOS 11、xcode 10 中启动

swift - 在不同场景中使用变量

ios - 苹果商店如何确定应用程序的语言信息

ios - 将react-native从0.59更新到0.61.4后找不到“React/RCTBundleURLProvider.h”文件

ios - iOS 应用程序中用于调试和 Release模式的不同语言?

ios - 设置 bundle 的核心数据模型中定义的父实体

ios - 在 Swift 中删除表格行的滑动功能没有动画效果

ios - 不同控制状态的 ASButtonNode attributeTitle