【问题标题】:WkWebView copy string app freezeWkWebView 复制字符串应用冻结
【发布时间】:2018-04-30 08:39:10
【问题描述】:

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

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

Returning local object of class NSString PBItemCollectionServicer connection disconnected.

当我暂停调试器时,我看到的就是这些:

我该如何调试呢?有任何想法吗?

【问题讨论】:

  • 不知道为什么会花很长时间,但尝试在单独的线程中执行复制操作,例如不是 GUI 线程。您可以使用Grand Central Dispatch(GCD) 在另一个线程中运行方法。
  • 你能给我们一些代码吗?
  • 加载pdf的是wkWebView。实际的复制不是一个正在执行的代码,只是用户在 pdf 中缩放和标记文本。
  • 你在复制什么?
  • 当用户尝试从 pdf 复制文本时,会发生这种情况

标签: swift wkwebview uipasteboard


【解决方案1】:

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

基于此答案:UIWebView without Copy/Paste when displaying PDF files

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)
}

【讨论】:

    猜你喜欢
    • 2013-10-04
    • 2017-01-17
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 2016-11-14
    • 2013-11-03
    相关资源
    最近更新 更多