Implementé un teclado personalizado asociado con un campo de texto, por lo que cuando el usuario presiona el botón Eliminar, elimino el último carácter de la cadena y actualizo manualmente el texto actual del campo de texto .Cómo eliminar el último símbolo Unicode de NSString
NSRange range = NSMakeRange(currentTextFieldString.length-1, 1);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
Hasta ahora todo bien.
Ahora, el problema es que el usuario tiene la opción de ingresar algunos símbolos Unicode especiales, estos no son de 1 byte, también pueden ser de 2 bytes, ahora al presionar el botón Eliminar, tengo que quitar todo el símbolo , pero si sigo el enfoque anterior, el usuario tiene que presionar el botón Eliminar dos veces.
Aquí, si lo hago:
NSRange range = NSMakeRange(currentTextFieldString.length-2, 2);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
funciona bien, pero a continuación, los caracteres normales, que son sólo 1 byte, se borran dos veces a la vez.
¿Cómo manejar tales escenarios?
Gracias de antemano.
EDIT:
Es extraño, que si cambiar al teclado de iPhone, que maneja ambos casos adecuadamente. Debe haber alguna forma de hacerlo, hay algo que me falta, pero no puedo descifrar qué.
¿Cómo está agregando los caracteres el teclado personalizado? – Joe
Mi respuesta a esta pregunta puede ayudarlo http://stackoverflow.com/q/11567049/1487063 – Dustin
@Joe: cuando el usuario presiona un botón, capturo el caracter correspondiente, lo anexo al texto actual del campo de texto, y asignarlo como el texto para el campo de texto. –