質問

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

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

私も実装しました UITextFieldDelegate.

の右のバーボタンをアクティブ化/非アクティブ化したい UINavigationBar 私の変化によると UITextField. 。ルールは単純です。テキストフィールドに少なくとも1つの文字がある場合、ボタンを有効にするだけで、それ以外の場合は無効にします。

実装しました UITextField's Delegate Method textField:shouldChangeCharactersInRange: 要件を常に確認し、ボタンのステータスを更新します。

ここで、私の問題は、テキストフィールドの小さなクロスボタンをクリックすると、メソッドです。 textField:shouldChangeCharactersInRange: 呼ばれていません。そのため、必要なアクションがありません。クリアボタンのヒットイベントを識別するにはどうすればよいですか?

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

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

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

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

役に立ちましたか?

解決

使用 委任方法 textViewShouldClear::

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

- (BOOL)textFieldShouldClear:(UITextField *)textField

パラメーター

textField

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

返品値

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

討論

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

代表者によるこの方法の実装はオプションです。存在しない場合、この方法が返されたかのようにテキストがクリアされます YES。可用性

* Available in iOS 2.0 and later.

uitextfield.hで宣言されました

他のヒント

使用できます textFieldShouldClear: ユーザーがクリアボタンをタップするときに処理する委任方法。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top