UiTextView перейти к ошибке следующего символа с помощью смайликов

В UiTextView у меня есть функция перехода к следующему символу после каретки:

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

Когда у меня есть смайлики, это не работает, мне приходится это делать дважды.

Мне было интересно, могу ли я проверить, является ли следующий символ после каретки специальным символом, поэтому я перемещаю 2 вместо 1 в место каретки.

И когда я пытаюсь получить NSString этого диапазона, это ничего не дает или ошибка

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

Любая помощь?


person F79    schedule 10.10.2013    source источник


Ответы (1)


Используйте метод NSString rangeOfComposedCharacterSequenceAtIndex:. Для большинства символов это вернет диапазон длиной 1. Но для символов со значением Unicode U+10000 или более это даст диапазон длиной 2.

Это переместит курсор к следующему символу:

NSRange nextRange = [textView.text rangeOfComposedCharacterSequenceAtIndex:textView.selectedRange.location];
textView.selectedRange = NSMakeRange(nextRange.location + nextRange.length, 0);
person rmaddy    schedule 10.10.2013
comment
Эй, я почти закончил свой ответ :-) - Я только думаю, что + 1 в первой строке неверен. - person Martin R; 11.10.2013