2012-04-06 31 views
4

我想遍历表情符输入字符串(来自UITextField)的'字符',然后一个接一个地用UILabel显示这些表情符号图标。Apple Emoji /遍历NSString

for (int i=0; i < len; i++) { 
    unichar c = [transformedString characterAtIndex:i]; 
    [label setText:[NSString stringWithFormat:@"%C", c]]; 
... 

本工程为ASCII文本而不是绘文字字体(所有的除外心脏符号是空的)。正如我注意到的,一个表情符号图标由字符串中的2个字符表示。 据我所知,表情符号使用私人区域Unicode字符。

无论如何要实现这一目标吗?

非常感谢你,你救了我一些头痛...

+0

检查类似于您的问题,我的问题:http://stackoverflow.com/questions/4615506/composing-unicode-char-format-for-nsstring – Eimantas 2012-04-06 14:14:10

回答

8

您可以用枚举的一个*上的NSString实例方法,与选项NSStringEnumerationByComposedCharacterSequences

- (void)enumerateSubstringsInRange:(NSRange)range 
          options:(NSStringEnumerationOptions)opts 
         usingBlock:(void (^)(NSString *substring, 
              NSRange substringRange, 
              NSRange enclosingRange, 
              BOOL *stop))block 

NSString使用UTF-16代表一些代码点作为两个16位值。您也可以在字符串中手动检查这些“代理对”并手动合并它们,但是您仍然只能获取代码点而不是字符。


[transformedString 
    enumerateSubstringsInRange:NSMakeRange(0,[transformedString length] 
         options:NSStringEnumerationByComposedCharacterSequences 
        usingBlock: ^(NSString *substring,NSRange,NSRange,BOOL *) 
{ 
    [label setText:substring]; 
}]; 
+0

嗨,哥们,那没有的伎俩!非常感谢你.. – Patrick 2012-04-08 06:55:47