我试着用表情符号作为链接。

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

上面的代码将表情符号转换为链接,但表情符号将消失。

最佳答案

问题的原因可能是:

NSMakeRange(0,1)

许多Cocoa/Cocoa Touch api使用基于UTF-16的偏移量和计数。
大多数emojis是由2个UTF-16代码单元组成的,有些则是4个或更多。
如果要创建一个范围来指示emojiString.string的第一个字符,并使其成为一个链接,则可能需要编写如下内容:
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)
}

10-07 20:45