Невозможно скопировать текст из WKWebview в буфер обмена

У меня есть WKWebview, который открывает документ Google в текстовом формате. Я пытался скопировать текст в представлении, чтобы он был строкой в ​​моем коде.

Я использовал пользовательский UIMenJAuItem «Parse», когда он выбран, выделяет весь текст и копирует его в буфер обмена. Но проблема в том, что буфер обмена не может загрузить текст с первого раза.

Я также попытался оценить Java-скрипты на экране, которые не работали из-за безопасности контента Apple.

В любом случае, я могу добиться результата?

Ниже приведены мои попытки, которые не увенчались успехом.

//Thorugh web view

extension ViewController:WKNavigationDelegate{
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        webView.evaluateJavaScript("document.body.innerText") { (doc, error) in
            if doc != nil
            {print(doc!)}
            if let e = error
                {print(e.localizedDescription)}
        }
    }
    func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Swift.Void){
        return decisionHandler(.allow)
    }

}

По UIMenuItem

  override func viewDidLoad() {
        let menuItem = UIMenuItem(title: "Parse", action: #selector(ViewController.parse(_:)))

        UIMenuController.shared.menuItems = [menuItem]
}


@objc func parse(_ sender:UIMenuItem){
        webView.selectAll(sender)
        self.webView.copy(UIApplication.shared)
        print(UIPasteboard.general.string!)
    }

person Raon    schedule 03.09.2018    source источник


Ответы (1)


Я решил проблему.

Чтобы текст был скопирован в буфер обмена, вам нужно выгрузить веб-страницу из просмотра. т.е. просто применить, выбрать все, скопировать. Затем, если вы загрузите новую веб-страницу в веб-просмотр, вы можете иметь скопированный текст в UIPasteBoard.general.string

person Raon    schedule 11.09.2018