Cómo eliminar el último símbolo de Unicode de NSString

He implementado un teclado personalizado asociado con un campo de texto, por lo que cuando el usuario presiona el botón de eliminar, elimino el último carácter de la cadena y actualizo manualmente el texto del campo de texto actual.

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

Hasta ahora tan bueno.

Ahora, el problema es que el usuario tiene la opción de ingresar algunos símbolos especiales de Unicode, estos no son de 1 byte, también pueden ser de 2 bytes, ahora al presionar el botón de eliminar, tengo que eliminar todo el símbolo, pero si Siga 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 luego, los caracteres normales, que son solo 1 byte, se eliminan dos veces a la vez.

¿Cómo manejar tales escenarios?

Gracias por adelantado.

EDITAR:

Es extraño que si cambio al teclado del iPhone, maneje ambos casos de manera adecuada. Debe haber alguna forma de hacerlo, hay algo que me falta, pero no puedo averiguar qué.

Respuestas a la pregunta(3)

Su respuesta a la pregunta