如何将 NSLinkAttributeName 添加到表情符号?

How to add NSLinkAttributeName to emoji?

我正在尝试将表情符号用作 link。

emojiString.addAttribute(NSLinkAttributeName, value: "https://www.google.com/" , range: NSMakeRange(0,1))

上面的代码将表情符号变成 link,但表情符号会消失。

您的问题的原因可能是这样的:

NSMakeRange(0,1)

许多 Cocoa/Cocoa Touch API 使用基于 UTF-16 的偏移量和计数。

大多数表情符号由 2 个 UTF-16 代码单元组成,有些是 4 个或更多。

如果你想做一个范围表示emojiString.string的第一个字符,并且使它成为link,你可能需要这样写:

if let ch = emojiString.string.characters.first {
    let range = NSRange(0..<String(ch).utf16.count)
    emojiString.addAttribute(NSLinkAttributeName, value: "https://www.google.com/" , range: range)
}