Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift WkWebView复制字符串应用程序冻结_Swift_Wkwebview_Uipasteboard - Fatal编程技术网

Swift WkWebView复制字符串应用程序冻结

Swift WkWebView复制字符串应用程序冻结,swift,wkwebview,uipasteboard,Swift,Wkwebview,Uipasteboard,我有一个奇怪的问题,当用户在WkWebView中选择文本时,单击“复制我的应用程序”会冻结。没有用于复制的代码,只是用户正常使用wkWebView 未显示崩溃或错误,但日志显示: 返回NSString类的本地对象 PBItemCollectionService连接已断开。 暂停调试器时,我只看到以下内容: 我如何调试这个?有什么想法吗 我未能成功调试导致此问题的原因,但我们的临时解决方案是为用户提供一个长按操作,以复制与该视图中的用户相关的元数据 基于这一回答: 不确定为什么需要很长时间,但请

我有一个奇怪的问题,当用户在WkWebView中选择文本时,单击“复制我的应用程序”会冻结。没有用于复制的代码,只是用户正常使用wkWebView

未显示崩溃或错误,但日志显示:

返回NSString类的本地对象
PBItemCollectionService连接已断开。

暂停调试器时,我只看到以下内容:


我如何调试这个?有什么想法吗

我未能成功调试导致此问题的原因,但我们的临时解决方案是为用户提供一个长按操作,以复制与该视图中的用户相关的元数据

基于这一回答:


不确定为什么需要很长时间,但请尝试在单独的线程中执行复制操作,例如,不在GUI线程中。您可以使用在另一个线程中运行方法。请给我们看一些代码好吗?加载pdf的是wkWebView。实际的复制并不是用户在pdf中缩放和标记文本时执行的代码。您在复制什么?当用户试图从pdf中复制文本时,会发生这种情况
let longPress =UILongPressGestureRecognizer(target: self, action: #selector(copyOptions))
longPress.allowableMovement = 100
longPress.minimumPressDuration = 0.3
longPress.delegate = self
longPress.delaysTouchesBegan = true
longPress.delaysTouchesEnded = true
longPress.cancelsTouchesInView = true
self.wrapper.addGestureRecognizer(longPress)

func copyOptions () {
    let alertController = UIAlertController(title: "Copy", message: nil, preferredStyle: .alert)

    alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { action in

    }))

    if let someValue = self.someObject?.someValue {
        alertController.addAction(UIAlertAction(title: "Copy Some Value", style: .default, handler: { action in
            UIPasteboard.general.string = someValue
        }))
    }


    self.present(alertController, animated: true, completion: nil)
}