如何在WKWebView中禁用自动灰色选择?

时间:2017-05-17 13:39:17

标签: ios swift wkwebview

我在我的应用程序中使用了WKWebView。当我点击某些内容时,视图上会出现灰色的叠加层,如图所示:

Example of the gray overlay after selection

我已经禁用了后退导航。禁用用户交互不是我的选择,因为我想保留点击链接的能力。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用CSS属性-webkit-tap-highlight-color禁用它:

import UIKit
import WebKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let wv = WKWebView(frame: view.bounds)
        view.addSubview(wv)
        wv.load(URLRequest(url:URL(string: "https://www.google.com")!))
        wv.navigationDelegate = self
    }
}

extension ViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        let script = "function addStyleString(str) {" +
                "var node = document.createElement('style');" +
                "node.innerHTML = str;" +
                "document.body.appendChild(node);" +
            "}" +
            "addStyleString('* {-webkit-tap-highlight-color: rgba(0,0,0,0);}');"
        webView.evaluateJavaScript(script)
    }
}

答案 1 :(得分:1)

与上一个答案类似,但略短一些,您可以改用透明颜色。

extension ViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        webView.evaluateJavaScript("document.body.style.webkitTapHighlightColor='transparent';")
    }
}

希望对别人有帮助!