2012-03-30 94 views
5

當表情符是使用下面的代碼集:爲什麼表情符號無法在UITextField中正確顯示?

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

它只是顯示爲方形。但是當我通過鍵盤輸入表情符號時,它顯示正確。有什麼問題?

PS:我使用的是IOS 5.1

Text View with Emoji Characters

+2

看看我的答案在:http://stackoverflow.com/questions/9886903/iphone-how-to-write-symbol-on-a-label/9887028#9887028 – Devang 2012-03-30 09:28:23

+1

我找到了解決方案。在ios5.1中,您必須使用Unicode 6.0,以下是Unicode 6.0字符和軟銀PUA字符之間的映射:http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS。 txt – yakexi 2012-03-30 09:57:20

+3

解決方案:self.textField.text = @「\ U0001F604」; – yakexi 2012-03-31 14:01:12

回答

2

在舊版iOS的繪文字字符都以Unicode專用使用區域,其顧名思義是一組統一的代碼點明確沒有任何關聯的字符。但是,Unicode標準已更新爲包含大量表情符號字符,因此iOS現在使用這些字符,就像Mac OS X一樣。

您可以在www的代碼表中看到所有Unicode表情符號的列表.unicode.org /圖表例如http://www.unicode.org/charts/PDF/U1F600.pdf這些也告訴你每個表情符號實際上是什麼意思。

任何Unicode表情符號都不在Unicode規範的基本多語言平面中,這意味着它們都太大而不適合單個iOS unichar。因此,當它們存儲在NSString中時,每個表情符號將覆蓋多個unichars - 如果您嘗試迭代字符串中的字符,則需要注意一些情況。

如果你有一個像

NSString *emoji [email protected]"\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 

其中張嘴和單笑臉微笑的眼睛的表情符號是兩個單字符長的看到這一點,而不是一個正如我們預料的那樣。

相關問題