4

UITextField次のコードを使用して、1 回のクリックですべてのテキストをクリアするために使用される小さな十字ボタンを追加できます。

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

も実施しUITextFieldDelegateました。

UINavigationBarの変更に応じて、の右バー ボタンをアクティブ化/非アクティブ化したいと考えていUITextFieldます。ルールは簡単です。テキスト フィールドに少なくとも 1 文字ある場合はボタンを有効にし、それ以外の場合は無効にします。

UITextFieldのデリゲート メソッドを実装してtextField:shouldChangeCharactersInRange:、要件を常にチェックし、ボタンのステータスを更新しました。

今私の問題は、テキスト フィールドの小さな十字ボタンをクリックすると、メソッドtextField:shouldChangeCharactersInRange:が呼び出されないことです。したがって、必要なアクションが欠落しています。クリアボタンのヒットイベントを特定するにはどうすればよいですか?

私が話していることを示すいくつかの写真。

初期段階: ここでは、テキスト フィールドに文字がないため、[完了] ボタンは無効になっています。

文字を入力すると、「完了」ボタンが有効になります

ここで、クリア ボタンをクリックすると、[完了] ボタンが引き続き有効になります。これは間違っています。

4

2 に答える 2

8

デリゲート メソッドtextViewShouldClear:を使用します。

テキスト フィールドの現在の内容を削除する必要があるかどうかをデリゲートに尋ねます。

- (BOOL)textFieldShouldClear:(UITextField *)textField

パラメーター

textField

テキストを含むテキスト フィールド。

戻り値

YESテキスト フィールドの内容をクリアする必要がある場合。それ以外の場合は、NO.

討論

ユーザーが組み込みのクリア ボタンを押すと、テキスト フィールドはこのメソッドを呼び出します。(このボタンはデフォルトでは表示されませんが、テキスト フィールドのプロパティの値を変更することで有効にできますclearButtonMode。) このメソッドは、編集が開始 clearsOnBeginEditingされ、テキスト フィールドのプロパティが に設定されたときにも呼び出されYESます。

デリゲートによるこのメソッドの実装はオプションです。存在しない場合、このメソッドが を返したかのようにテキストがクリアされますYES。可用性

* Available in iOS 2.0 and later.

UITextField.h で宣言

于 2011-09-05T06:01:37.713 に答える
5

textFieldShouldClear:ユーザーがクリアボタンをタップしたときに処理するデリゲートメソッドを使用できます。

于 2011-09-05T06:00:36.193 に答える