2012-03-30 22 views
5

:Neden Emoji bir UITextField uygulamasında doğru görüntülenemiyor? Bir Emoji karakteri aşağıdaki kodu kullanarak ayarlandığında

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

Sadece bir kare olarak görüntüler. Ama bir Emoji'yi klavyeden girdiğimde doğru şekilde görüntüleniyor. Sorun ne?

PS: Ben eski iOS sürümlerinde IOS 5,1

Text View with Emoji Characters

+2

Cevabıma şu adresten bakabilirsiniz: http://stackoverflow.com/questions/9886903/iphone-how-to-write-symbol-on-a-label/9887028#9887028 – Devang

+1

Çözümü buldum. Ios5.1'de Unicode 6.0 kullanmalısınız, burada Unicode 6.0 karakterleri ve Softbank PUA karakterleri arasındaki eşlemeler: http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS. txt – yakexi

+3

çözüm: self.textField.text = @ "\ U0001F604"; – yakexi

cevap

2

kullanıyorum Emoji karakterleri tüm adından da anlaşılacağı gibi Unicode Özel Kullanım Alanı, içinde bulunduğumuz Unicode kümesidir Açıkça ilişkili herhangi bir karakter içermeyen kod noktaları. Ancak, Unicode standardı çok sayıda Emoji karakterini içerecek şekilde güncellendi, bu nedenle iOS artık bunları kullanıyor, Mac OS X.

Tüm Unicode Emoji öğelerinin listesini www'deki kod listelerinde görebilirsiniz. .unicode.org/grafikler örn. http://www.unicode.org/charts/PDF/U1F600.pdf ve bunlar da her Emoji'nin aslında temsil etmek için ne ifade ettiğini söyler.

Unicode Emoji'nin hiçbiri Unicode özelliğinin Temel Çok Dilli Düzleminde yer almaz, bu da tek bir iOS unichar'a sığmayacak kadar büyük oldukları anlamına gelir. Yani bir NSString'de saklandıklarında, her bir emoji birden fazla unichar'ı kapsayacak - bir dizideki karakterler üzerinde yineleme yapmaya çalıştığınızda farkında olmanız gereken bir şey.

Eğer

NSString *emoji [email protected]"\U0001F604"; 
NSString *ascii = @"A"; 
NSLog(@"emoji.length %d, ascii.length %d", emoji.length, ascii.length); 

gibi kod Birini, AĞZI AÇIK tek GÜLEN YÜZ VE GÜLEN GÖZLER emojisi iki unichars uzunluğundadır çıkışı

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

bu görmeyeceğim varsa beklediğimiz gibi.

İlgili konular