UITextFieldがあり、このフィールドへの入力は数字、コンマ、またはポイントのみを許可する必要があります。
この文字列に上記の文字の代わりに文字が含まれているかどうかを確認するにはどうすればよいですか?また、それらを置き換え/削除するにはどうすればよいですか?
私のフィールドはコストを保存し、数字、コンマ、またはポイントのみが必要です...
誰か助けてもらえますか?
ありがとう!
UITextFieldがあり、このフィールドへの入力は数字、コンマ、またはポイントのみを許可する必要があります。
この文字列に上記の文字の代わりに文字が含まれているかどうかを確認するにはどうすればよいですか?また、それらを置き換え/削除するにはどうすればよいですか?
私のフィールドはコストを保存し、数字、コンマ、またはポイントのみが必要です...
誰か助けてもらえますか?
ありがとう!
UITextFieldDelegate
テキストフィールドには、を使用してメソッドを実装できますtextField:shouldChangeCharactersInRange:replacementString:
。ドキュメントによると、「ユーザーがテキストフィールドに新しい文字を入力するか、既存の文字を削除するたびに、テキストフィールドはこのメソッドを呼び出します。」この方法では、数字以外のすべての文字をチェックして削除する必要があります。
プロトコル-textFieldDidEndEditing:
からの方法を使用できます。UITextFieldDelegate
このメソッドは、テキストフィールドがファーストレスポンダーのステータスを辞任する(つまり、編集を終了する)たびに呼び出されます。入力した文字列を確認するチャンスです。入力された各文字の後にチェックを実行する場合は-textField:shouldChangeCharactersInRange:replacementString:
、donkimが提案するように使用します。
代わりに、文字列をチェックするために、テキストフィールドのキーボード値をNumberPadとして割り当てることができないのはなぜですか。ユーザーが文字列を入力できないようにするため。
これを行うには、フィールドへのユーザー入力を監視し、一致しない文字を自動的に削除します。IBActionメソッドを作成します。
- (IBAction)validateEntry:(id)sender;
次に、それをテキストフィールドのEditingChangedイベントに添付します。このメソッドは、ユーザーが入力したか、ユーザーがにテキストを貼り付けたかに関係なく、フィールドのテキストが変更されるたびに呼び出されます。
メソッド内では、テキストを調べて問題のある文字を削除するか、より丁寧に、無効な文字を入力したことをユーザーに通知するUILabelを更新し、修正されるまで送信ボタンを無効にすることができます。