iOS 分享 Sheet 和复制选项粘贴 link 在某些情况下不起作用

iOS Share Sheet and Copy options paste link not working in certain situations

我们在分享 sheet 副本 activity 时遇到了一个相当奇怪的问题。

我们只是对内容进行了简短的介绍,然后我们将 link 提供给共享 activity,如...

    guard let viewController = vc, let sourceView = viewController.view, let url = URL(string: link) else { 
        return
    }

    let activityViewController = UIActivityViewController(activityItems: [text, url], applicationActivities: nil)

    viewController.present(activityViewController, animated: true, completion: nil)
    activityViewController.popoverPresentationController?.sourceView = sourceView

除了在我们的内部聊天中,这工作得很好。在我们的聊天 textview 中,文本 blurb 出现了,但是 link 没有像预期的那样出现在文本旁边。

有问题的文本视图是 SlackTextViewController(我知道它现在已被弃用,我们已经使用它一段时间了)。我找不到任何表明他们正在以任何方式清理输入或删除 link 的文档,但这很可能与该组件有关。我尝试了 textView:shouldChangeTextInRange 的简单实现来打印 textView 收到的文本,果然,那里没有 link。

为了完整起见,这就是它的样子。

override func textView(_: UITextView, shouldChangeTextIn _: NSRange, replacementText text: String) -> Bool {
    print(text)
    return true
}

此外,如果您直接 copy/paste 一个 link,那效果很好。如果您将共享文本复制为纯文本并粘贴,它也可以正常工作。这使我相信在处理该共享文本时这里缺少一些东西。

有没有人在贴里遇到过这个问题?是否需要实施一些 lifecycle/delegate 来处理共享文本?

希望这对其他人有所帮助 - 这里的问题是 slacktextviewcontroller 覆盖了默认的粘贴行为,这会导致共享副本在粘贴 文本 时出现一些问题,但不会复制的 URL.