Mam zaimplementowaną niestandardową klawiaturę powiązaną z polem tekstowym, więc kiedy użytkownik naciśnie przycisk usuwania, usuwam ostatni znak z ciągu i ręcznie aktualizuję bieżący tekst pola tekstowego .Jak usunąć ostatni symbol Unicode z NSString
NSRange range = NSMakeRange(currentTextFieldString.length-1, 1);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
Jak dotąd tak dobrze.
Problem polega na tym, że użytkownik ma możliwość wprowadzenia specjalnych symboli unikodowych, nie są one 1-bajtowe, mogą też być 2-bajtowe, teraz po naciśnięciu przycisku kasowania, muszę usunąć cały symbol , ale jeśli postępuję zgodnie z powyższym podejściem, użytkownik musi dwukrotnie nacisnąć przycisk usuwania.
Tutaj, jeśli mam zrobić:
NSRange range = NSMakeRange(currentTextFieldString.length-2, 2);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
to działa dobrze, ale potem, zwykłe znaki, które są tylko 1 bajt, zostaną usunięte dwa razy w tym samym czasie.
Jak radzić sobie z takimi scenariuszami?
Z góry dziękuję.
EDIT:
To dziwne, że jeśli mogę przełączyć na klawiaturze iPhone, obsługuje oba przypadki odpowiednio. Musi być jakiś sposób, aby to zrobić, jest coś, czego mi brakuje, ale nie jestem w stanie dowiedzieć się, co.
Jak twoja niestandardowa klawiatura dodaje znaki? – Joe
Moja odpowiedź na to pytanie może Ci pomóc http://stackoverflow.com/q/11567049/1487063 – Dustin
@Joe: gdy użytkownik naciśnie przycisk, łapię odpowiedni znak, dołączam go do bieżącego tekstu w polu tekstowym, i przypisz go jako tekst pola tekstowego. –