Ho implementato una tastiera personalizzata associata a un campo di testo, quindi quando l'utente preme il pulsante Elimina, rimuovo l'ultimo carattere dalla stringa e aggiorno manualmente il testo del campo di testo corrente .Come rimuovere l'ultimo simbolo Unicode da NSString
NSRange range = NSMakeRange(currentTextFieldString.length-1, 1);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
Fin qui tutto bene.
Ora, il problema è che l'utente ha la possibilità di inserire alcuni simboli speciali Unicode, questi non sono 1 byte, possono essere anche 2 byte, ora premendo il pulsante Elimina, devo rimuovere l'intero simbolo , ma se seguo l'approccio di cui sopra, l'utente deve premere due volte il pulsante di cancellazione.
Qui, se faccio:
NSRange range = NSMakeRange(currentTextFieldString.length-2, 2);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
funziona benissimo, ma d'altra parte, i caratteri normali, che sono solo 1 byte, vengono eliminati due volte alla volta.
Come gestire tali scenari?
Grazie in anticipo.
EDIT:
E 'strano, che se posso passare alla tastiera iPhone, gestisce entrambi i casi in modo appropriato. Ci deve essere un modo per farlo, c'è qualcosa che mi manca, ma non sono in grado di capire cosa.
In che modo la tastiera personalizzata aggiunge caratteri? – Joe
La mia risposta a questa domanda potrebbe aiutarti http://stackoverflow.com/q/11567049/1487063 – Dustin
@Joe: ogni volta che l'utente preme un pulsante, prendo il carattere corrispondente, lo aggiungo al testo corrente del campo di testo, e assegnarlo come testo per il campo di testo. –