Use the NSString rangeOfComposedCharacterSequenceAtIndex:
method. For most characters this will return a range with a length of 1. But for characters with a Unicode value of U+10000 or more, this will give a range with a length of 2.
This will move the caret to the next character:
NSRange nextRange = [textView.text rangeOfComposedCharacterSequenceAtIndex:textView.selectedRange.location];
textView.selectedRange = NSMakeRange(nextRange.location + nextRange.length, 0);