Как добавить NSLinkAttributeName в эмодзи?

Я пытаюсь использовать смайлики в качестве ссылки.

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

Приведенный выше код превращает смайлик в ссылку, но смайлик исчезает.


person Alex    schedule 28.07.2016    source источник
comment
Может быть, это потому, что смайлик имеет большую длину: boun" title="урезать строку, содержащую эмодзи или символы Юникода в слове или символе boun"> stackoverflow.com/questions/15775294/ ?   -  person Larme    schedule 29.07.2016


Ответы (1)


Причина вашей проблемы может заключаться в следующем:

NSMakeRange(0,1)

Многие API-интерфейсы Cocoa/Cocoa Touch используют смещения и подсчеты на основе UTF-16.

И большинство смайликов состоят из 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)
}
person OOPer    schedule 29.07.2016