2010-12-11 43 views
0


私はUITextFieldを取得しました。このフィールドには数字、カンマまたはポイントタイプのみを許可する必要があります。
この文字列に上記の文字が含まれているかどうか、どのように置換/削除できますか文字列に文字列が含まれているかどうかを確認してキャンセルしますか?

私のフィールドは、コストを保存すると、私は数字のみ、コンマまたはポイントを必要とする...

誰も私を助けることができますか?
ありがとうございます!

+0

このサンプルを見ることができます... http://cocoabugs.blogspot.com/2011/01/allowing-only-characters-and-numbers-in.html –

答えて

1

UITextFieldDelegateプロトコルの-textFieldDidEndEditing:メソッドを使用できます。このメソッドは、テキストフィールドが最初のレスポンダステータスを終了する(つまり、編集を終了する)たびに呼び出されます。これは入力された文字列をチェックする機会です。入力された各文字の後にチェックを実行する場合は、-textField:shouldChangeCharactersInRange:replacementString:をdonkimが示唆するように使用してください。

0

文字列をチェックする代わりに、テキストフィールドのキーボード値をNumberPadとして割り当てるのはなぜですか。そのため、ユーザーは文字列を入力できなくなります。

+0

彼らは依然として必要なものを貼り付けることができます。 –

+0

私はこれについて考えていましたが、現在はNumberPadを使用しています...しかし、ロケールに基づいてカンマまたはポイントを入力できる必要があります。数字パッドをカスタマイズして別のボタンを追加する方法はありますか? – matteodv

+0

@Matthew Frederick私もこれを防ぐでしょう...キーボードをカスタマイズしたり、この文字列をチェックする方法はありますか? – matteodv

2

テキストフィールドの場合、UITextFieldDelegateを使用してtextField:shouldChangeCharactersInRange:replacementString:メソッドを実装できます。ドキュメントによると、 "テキストフィールドは、ユーザーがテキストフィールドに新しい文字を入力するか、既存の文字を削除するたびにこのメソッドを呼び出します。"この方法では、すべての非数字文字をチェックして削除する必要があります。

+0

私はマシューフレデリックの答えのコメントに記載されているようなシナリオを作成したい...ありがとう! – matteodv

0

フィールド内のユーザー入力を監視し、一致しない文字を自動的に削除することで、これを実行できます。 IBActionメソッドを作成します。

- (IBAction)validateEntry:(id)sender; 

その後、テキストフィールドの編集に添付はイベントを変更しました。このメソッドは、ユーザーが入力したテキストまたはテキストを貼り付けるユーザーのどちらからでもフィールド内のテキストが変更されるたびに呼び出されます。

このメソッドの内部では、テキストを調べて問題の文字を削除したり、ユーザーに無効な文字を入力したことを通知し、修正が確定するまで送信ボタンを無効にするUILabel

+0

残念ながら私はIBを使っていません...このシナリオのようなことをやってみましょう:文字列やその他の文字を使ってテキストフィールド内のユーザータイプを突き止めます。しかし、保存ボタンをタップすると、文字列をチェックする必要があります。文字が許可されていない場合は、アラートビューが表示されます。これは可能ですか?しかし、答えに感謝! – matteodv

関連する問題