UiTextView使用表情符号移动到下一个字符错误

时间:2013-10-10 21:00:20

标签: ios uitextview emoji nsrange

在UiTextView中,我有一个跳转到插入符后面的下一个字符的功能:

textView.selectedRange = NSMakeRange(textView.selectedRange.location+1,0);

当我有表情符号它不起作用时,我必须两次。

我想知道我是否可以检查插入符号之后的下一个字符是否为特殊字符,因此我在插入位置移动2而不是1。

当我尝试获取thaT范围的NSString时,它不会给出任何错误或错误

 NSRange myRange = NSMakeRange(textView.selectedRange.location,1);
 [textView.text substringWithRange:myRange]

任何帮助?

1 个答案:

答案 0 :(得分:2)

使用NSString rangeOfComposedCharacterSequenceAtIndex:方法。对于大多数字符,这将返回长度为1的范围。但对于Unicode值为U + 10000或更大的字符,这将给出一个长度为2的范围。

这会将插入符移动到下一个字符:

NSRange nextRange = [textView.text rangeOfComposedCharacterSequenceAtIndex:textView.selectedRange.location];
textView.selectedRange = NSMakeRange(nextRange.location + nextRange.length, 0);