文字列に文字が含まれているかどうかを確認し、それらをキャンセルします
-
08-10-2019 - |
質問
uitextfieldを持っているので、このフィールドで数字、コンマまたはポイントタイピングのみを許可する必要があります。
この文字列に上記の代わりに文字が含まれているかどうかを確認するにはどうすればよいですか?また、それらを交換/削除するにはどうすればよいですか?
私のフィールドにはコストが保存され、数字、コンマまたはポイントのみが必要です...
誰かが私を助けることができますか?
ありがとう!
解決
使用できます -textFieldDidEndEditing:
からの方法 UITextFieldDelegate
プロトコル。このメソッドは、テキストフィールドが最初のレスポンダーステータスを辞任するたびに呼び出されます(つまり、編集を終了します)。これは、入力された文字列を確認する機会です。入力された各文字の後にチェックを実行したい場合は、使用してください。 -textField:shouldChangeCharactersInRange:replacementString:
ドンキムが示唆するように。
他のヒント
テキストフィールドの場合、使用できます UITextFieldDelegate
および実装します textField:shouldChangeCharactersInRange:replacementString:
方法。ドキュメントによると、「テキストフィールドは、ユーザーがテキストフィールドで新しい文字を入力するか、既存の文字を削除するたびにこのメソッドを呼び出します。」この方法では、すべての非番号文字をチェックして削除する必要があります。
代わりに、文字列を確認するために、Textfieldのキーボード値をNumberPadとして割り当てることができない理由。ユーザーが文字列を入力できないようにします。
フィールドでのユーザー入力を監視し、非一致しない文字を自動的に削除することにより、それを行うことができます。 ibactionメソッドを作成します。
- (IBAction)validateEntry:(id)sender;
次に、テキストフィールドに添付します 編集が変更されました イベント。このメソッドは、ユーザーの入力またはユーザー貼り付けテキストからのフィールドのテキストが変更されるたびに呼び出されます。
メソッド内では、テキストを調べて問題のある文字を削除するか、より丁寧に、ユーザーに無効な文字を入力したことを伝えるuilabelを更新し、固定されるまで送信ボタンを無効にすることができます。