为什么不能在UITextField中正确显示表情符号?

时间:2012-03-30 09:25:23

标签: iphone ios ios5 emoji

使用以下代码设置表情符号字符时:

self.textField.text = @"\ue415";

它只显示为正方形。但是当我从键盘输入表情符号时,它会正确显示。有什么问题?

PS:我正在使用IOS 5.1

Text View with Emoji Characters

1 个答案:

答案 0 :(得分:2)

在早期版本的iOS中,表情符号字符都在Unicode专用区域中,顾名思义就是一组明确没有任何关联字符的Unicode代码点。但是,Unicode标准已更新为包含大量表情符号字符,因此iOS现在使用这些字符,Mac OS X也是如此。

您可以在www.unicode.org/charts的代码表中看到所有Unicode表情符号的列表,例如http://www.unicode.org/charts/PDF/U1F600.pdf这些也告诉你每个表情符号实际意味着什么。

所有Unicode表情符号都不在Unicode规范的基本多语言平面中,这意味着它们太大而不适合单个iOS unichar。因此,当它们存储在NSString中时,每个表情符号将覆盖多个unichars - 如果您尝试迭代字符串中的字符,则应注意这一点。

如果你有像

这样的代码
NSString *emoji =@"\U0001F604";
NSString *ascii = @"A";
NSLog(@"emoji.length %d, ascii.length %d", emoji.length, ascii.length);

你会在输出中看到这个

2013-03-08 14:42:22.841 test[23980:c07] emoji.length 2, ascii.length 1

单面微笑与开口和微笑表情符号是两个长时间的单一,而不是我们所期望的那个。