テキスト フィールドに関連付けられたカスタム キーボードを実装したので、ユーザーが削除ボタンを押すと、文字列から最後の文字を削除し、現在のテキスト フィールドのテキストを手動で更新します。
NSRange range = NSMakeRange(currentTextFieldString.length-1, 1);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
ここまでは順調ですね。
さて、問題は、ユーザーがいくつかの特別な Unicode 記号を入力するオプションを持っていることです。これらは 1 バイトではなく、2 バイトにすることもできます。削除ボタンを押すと、記号全体を削除する必要がありますが、上記のアプローチに従うと、ユーザーは削除ボタンを 2 回押す必要があります。
ここで、もしそうなら:
NSRange range = NSMakeRange(currentTextFieldString.length-2, 2);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
正常に動作しますが、通常の文字は 1 バイトだけで、一度に 2 回削除されます。
そのようなシナリオをどのように処理しますか?
前もって感謝します。
編集:
奇妙なことに、iPhone キーボードに切り替えると、両方のケースが適切に処理されます。それを行うには何らかの方法があるに違いありません。私には欠けているものがありますが、何がわからないのですか。