为什么表情符号在UITextField中无法正确显示?

yak*_*exi 5 iphone ios emoji ios5

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

self.textField.text = @"\ue415";
Run Code Online (Sandbox Code Playgroud)

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

PS:我正在使用IOS 5.1

带表情符号字符的文本视图

小智 2

在旧版本的 iOS 中,表情符号字符全部位于 Unicode 专用区域中,顾名思义,这是一组明确没有任何关联字符的 Unicode 代码点。然而,Unicode 标准已经更新,包含了大量的表情符号字符,因此 iOS 现在使用这些字符,Mac OS X 也是如此。

\n\n

您可以在 www.unicode.org/charts 的代码图表中查看所有 Unicode 表情符号的列表,例如http://www.unicode.org/charts/PDF/U1F600.pdf,这些还可以告诉您每个表情符号实际上是什么意为代表。

\n\n

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

\n\n

如果你有类似的代码

\n\n
NSString *emoji =@"\\U0001F604";\nNSString *ascii = @"A";\nNSLog(@"emoji.length %d, ascii.length %d", emoji.length, ascii.length);\n
Run Code Online (Sandbox Code Playgroud)\n\n

您将在输出中看到这一点

\n\n
2013-03-08 14:42:22.841 test[23980:c07] emoji.length 2, ascii.length 1\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中,单个“张开嘴和微笑的眼睛”的笑脸表情符号有两个 unichar 长,而不是我们想象的那样长。

\n