如何从文本视图中复制不同字体的文本,并在粘贴到消息等其他应用程序时使用相同的字体?

How do you copy text from a text view with a different font and when pasted on other apps like messages, it's the same font?

这一行只复制没有字体的文本本身并粘贴它有效:

pasteBoard.string = MainController.customTextView.text 

我试过查看人们就此问题提出的类似答案,但我看到的几乎每个答案都在 Objective C 中并且已过时。通过查看 this 之类的其他答案,我认为我的副本可以正常工作,但是当我粘贴复制的文本时,它不会粘贴任何内容。这是我的复制功能:

    @objc func handleCopyButton() {
    MainController.customTextView.resignFirstResponder() // dismiss keyboard

    // Setup code in overridden UITextView.copy/paste
    let selectedRange = MainController.customTextView.selectedRange
    let selectedText = MainController.customTextView.attributedText.attributedSubstring(from: selectedRange)

    // UTI List
    let utf8StringType = "public.utf8-plain-text"
    let rtfdStringType = "com.apple.flat-rtfd"

    // Try custom copy
    do {
        // Convert attributedString to rtfd data
        let fullRange = NSRange(location: 0, length: selectedText.string.count)
        let data:NSData? = try selectedText.data(from: fullRange, documentAttributes: [NSAttributedString.DocumentAttributeKey.documentType: NSAttributedString.DocumentType.rtfd]) as NSData

        if let data = data {

            // Set pasteboard values (rtfd and plain text fallback)
            pasteBoard.items = [[rtfdStringType: data], [utf8StringType: selectedText.string]]

        }
    } catch { print("Couldn't copy") }

    // Copy if custom copy not available
    MainController.customTextView.copy()
}

如果您对此有任何疑问,请告诉我。提前致谢!

编辑:对于我试图做的事情,事实证明你不能复制和粘贴字体(至少在 iOS 上是这样,但我相信在 MacOS 上你可以),但你可以做的是复制并粘贴看起来像不同字体的 unicode 字符。如果您感兴趣,请查看 解决方案。

  • 对消息不起作用 因为苹果只对消息使用系统字体。
  • 为了使其在其他应用程序上运行,他们必须 支持它 并为他们提供字体,如果在 iOS 上,应用程序本身必须具有安装的字体。
  • 如果你想让你的文字出现,那么你可以使用UIPasteboard.general.string = stringVar
  • 尝试 this Whosebug 问题中的一些建议。