无法从WKWebview复制文本到剪贴板

4
我有一个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!)
    }
1个回答

0

我已经解决了这个问题。

要将文本复制到剪贴板,您需要卸载网页视图。即,只需应用全选、复制。然后,如果您加载一个新的网页到 webview 中,您可以在 UIPasteBoard.general.string 中获得复制的文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接