如何在NSString中遍历表情符号有一个NSString方法用于遍历NSString的子字符串
NSString *text = @"2012?? ";
[text enumerateSubstringsInRange:NSMakeRange(0, [text length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
printf("%s- ",[substring UTF8String]);
}];
Run Code Online (Sandbox Code Playgroud)
猜猜输出是什么?
输出是:
2- 0- 1- 2- - ?- ?- - - - - - - - - - - - - - -
Run Code Online (Sandbox Code Playgroud)
而不是:
2- 0- 1- 2- - ?- ?- - - - - - - - - - -
Run Code Online (Sandbox Code Playgroud)
像美国国旗一样,它由和组成.标志的长度似乎是4,它们由两个长度为2的组成字符组成.虽然列举了NSString,但它给了我而不是
当字符串在UITextView中时,键盘中的BACKSPACE被点击,它可以处理删除表情符号而不是.
在我的应用程序中,我制作了一个自定义表情符号键盘,并有一个DELETE按钮.我想DELETE按钮就像键盘中的系统BACKSPACE按钮一样工作.
有谁知道如何处理它?
Elf*_*dae 15
要删除UITextView中的最后一个字符,只需调用即可 -deleteBackward
- (void)deleteButtonPressed:(id)sender
{
[self.textView deleteBackward];
}
Run Code Online (Sandbox Code Playgroud)
我不是 unicode 专家,但我相信这里的问题是标志实际上是两个字符。它们是区域指示符号。例如,美国国旗是两个不同的字符:REGIONAL INDICATOR SYMBOL LETTER U和REGIONAL INDICATOR SYMBOL LETTER S。
http://en.wikipedia.org/wiki/Regional_Indicator_Symbol
您可能会幸运地要求文本输入系统为您进行标记化,因为它似乎理解(例如在删除时)它们应该被视为一个单元。尝试使用该UITextInputTokenizer方法positionFromPosition:toBoundary:inDirection:从字符串末尾移动到前一个字符(即 pass UITextGranularityCharacter)。您可以从 UITextView 或 UITextArea 的tokenizer方法获取标记生成器。
希望有帮助!
| 归档时间: |
|
| 查看次数: |
2662 次 |
| 最近记录: |