ユーザーが日付を入力できるテキスト フィールドを作成しており、必要な形式を表示したい: mm-dd-yyyy
. 入力すると、形式が入力した数値に置き換えられます。たとえば、 と入力する125
と、次のようになります12-5d-yyyy
。
私はこれを機能させることができました(textField:shouldChangeCharactersInRange:replacementString:
メソッドを使用して)。しかし、2 つの問題があります。
テキストフィールドを更新して、フォーマットと入力した内容を表示するようにすると(直接設定することにより
textField.text
)、カーソルは挿入されたテキストの最後に移動します。たとえば、現在は次のようになっています:12-30-yyyy|
(|
カーソルはどこにありますか)12-30-|yyyy
。 では、最後に入力した場所にカーソルを配置するにはどうすればよいでしょうか?ユーザーがバックスペースまたは削除を押した場合に削除が発生する場所を特定できませんでした。彼らがバックスペースまたは削除を押したことを判断する唯一の方法は、次のような
BOOL thisIsBackspace = ([string length] == 0)
ものreplacementString:
です :