Я реализовал настраиваемую клавиатуру, связанную с текстовым полем, поэтому, когда пользователь нажимает кнопку удаления, я удаляю последний символ из строки и вручную обновляю текст текущего текстового поля.
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 байта, удаляются дважды за раз.
Как справиться с такими сценариями?
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Странно, что если я переключаюсь на клавиатуру iPhone, она обрабатывает оба случая соответствующим образом. Должен быть какой-то способ сделать это, я чего-то упускаю, но не могу понять, что именно.