ユーザーが日付を入力できるテキストフィールドを作成していて、必要な形式:mm-dd-yyyy
を表示したいとします。彼らがタイプするとき、それは彼らがタイプする数字でフォーマットを置き換えるべきです。たとえば、125
と入力した場合は、12-5d-yyyy
のようになります。UITextFieldで削除の場所を特定するには
私はこれを(textField:shouldChangeCharactersInRange:replacementString:
メソッドを使用して)動作させることができました。それは形式プラス彼らが(直接textField.text
を設定することで)入力したが表示されるように、私は、テキストフィールドを更新
カーソルが挿入されたテキストの最後に行く:しかし、2つの問題点があります。たとえば、現在は
12-30-yyyy|
(ここでは|
がカーソルです)のように表示されますが、12-30-|yyyy
のようになります。 最後に入力したところにカーソルを置くにはどうすればよいですか?ユーザーがバックスペースまたは削除を押したときにどこで削除が行われるかを特定できませんでした。バックスペースまたは削除を押したと判断する方法は、
BOOL thisIsBackspace = ([string length] == 0)
(文字列はreplacementString:
の値ですが、これはどこで発生したのかわかりません)UITextFieldでどこで削除が行われるかはどのように判断できますか?UIDatePickerを使用して
方法の入力を「範囲」を用いて作られたかを決定することができますカーソルがどこにあるかを検出する方法はわかりませんが、UIDatePickerを使って別のビューにユーザーをリダイレクトして、ユーザーが日付を選択してUITextFieldで画面にリダイレクトする問題がありますか?あなたの方法を使用している間、誰かが実際には許可されている以上の値を入力することができます。たとえば、99は1日、13は月です。したがって、考えられるエラーを解析する時間を無駄にする必要があります。あなたはテキストフィールドの作成方法でユーザーをリダイレクトできます – Eugene