我已经实现了一个与文本字段关联的自定义键盘,因此当用户按下删除按钮时,我会从字符串中删除最后一个字符,并手动更新当前文本字段文本。
NSRange range = NSMakeRange(currentTextFieldString.length-1, 1);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
到现在为止还挺好。
现在,问题是,用户可以选择输入一些特殊的 unicode 符号,这些不是 1 个字节,它们也可以是 2 个字节,现在按下删除按钮,我必须删除整个符号,但如果我按照上述方法,用户必须按两次删除按钮。
在这里,如果我这样做:
NSRange range = NSMakeRange(currentTextFieldString.length-2, 2);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
它工作正常,但是,只有 1 个字节的普通字符一次被删除两次。
如何处理这样的场景?
提前致谢。
编辑:
奇怪的是,如果我切换到 iPhone 键盘,它可以适当地处理这两种情况。必须有某种方法可以做到这一点,我缺少一些东西,但我无法弄清楚是什么。