Как удалить последний символ юникода из NSString

Я реализовал пользовательскую клавиатуру, связанную с текстовым полем, поэтому, когда пользователь нажимает кнопку удаления, я удаляю последний символ из строки и вручную обновляю текст текущего текстового поля.

NSRange range = NSMakeRange(currentTextFieldString.length-1, 1);
[currentTextFieldString replaceCharactersInRange:range withString:@""];

Все идет нормально.

Теперь проблема в том, что у пользователя есть возможность ввести некоторые специальные символы юникода, это не 1 байт, они могут быть и 2 байта, теперь при нажатии кнопки удаления я должен удалить весь символ, но если я следуя описанному выше подходу, пользователь должен дважды нажать кнопку удаления.

Здесь, если я сделаю:

NSRange range = NSMakeRange(currentTextFieldString.length-2, 2);
[currentTextFieldString replaceCharactersInRange:range withString:@""];

он работает нормально, но затем обычные символы размером всего 1 байт удаляются дважды за раз.

Как обрабатывать такие сценарии?

Заранее спасибо.

РЕДАКТИРОВАТЬ:

Странно, что если я переключаюсь на клавиатуру iPhone, она корректно обрабатывает оба случая. Должен быть какой-то способ сделать это, есть что-то, чего мне не хватает, но я не могу понять, что.

6
задан Bani Uppal 1 August 2012 в 13:05
поделиться