Я применил пользовательскую клавиатуру, связанную с текстовым полем, поэтому, когда пользователь нажимает кнопку удаления, я удаляю последний символ из строки и вручную обновляю текст текущего текстового поля.
NSRange range = NSMakeRange(currentTextFieldString.length-1, 1);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
Пока все хорошо.
Теперь проблема заключается в том, что пользователь имеет возможность вводить некоторые специальные символы Unicode, это не 1 байт, они также могут быть 2 байта, теперь при нажатии кнопки удаления мне нужно удалить весь символ, но если я следую описанному выше подходу, пользователю необходимо дважды нажать кнопку удаления.
Здесь, если я это сделаю:
NSRange range = NSMakeRange(currentTextFieldString.length-2, 2);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
он работает нормально, но тогда нормальные символы, которые всего 1 байт, удаляются дважды за раз.
Как обрабатывать такие сценарии?
Спасибо заранее.
EDIT:
Странно, что если я переключусь на клавиатуру iPhone, он будет обрабатывать оба случая соответствующим образом. Должен быть какой-то способ сделать это, есть что-то, чего я не хватает, но не могу понять, что.