I am trying to implement my own keyboard containing emojis. To do this, I insert emoji at the cursor position.
This works great if 4-byte emoji characters do not exist in UITextField. Otherwise, the application crashes.
I post the insert code here. Can someone please indicate how to solve the problem?
UITextField *field = self.textField;
UITextRange *range = field.selectedTextRange;
int pos = [field offsetFromPosition:field.beginningOfDocument toPosition:range.end];
NSString * firstHalfString = [field.text substringToIndex:pos];
NSString * secondHalfString = [field.text substringFromIndex:pos];
field.text = [NSString stringWithFormat: @"%@%@%@", firstHalfString, emoticon, secondHalfString];
UITextPosition *newPos = [field positionFromPosition:field.beginningOfDocument offset:pos + 1];
field.selectedTextRange = [field textRangeFromPosition:newPos toPosition:newPos];
this line returns nil if there is emojis in the text:
UITextPosition *newPos = [field positionFromPosition:field.beginningOfDocument offset:pos + 1];
source
share