uitextfieldの小さなクロスボタンが押されたときのアクション
-
25-10-2019 - |
質問
1回のクリックですべてのテキストをクリアするために使用される小さなクロスボタンを追加できます UITextField
次のコードで。
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
私も実装しました UITextFieldDelegate
.
の右のバーボタンをアクティブ化/非アクティブ化したい UINavigationBar
私の変化によると UITextField
. 。ルールは単純です。テキストフィールドに少なくとも1つの文字がある場合、ボタンを有効にするだけで、それ以外の場合は無効にします。
実装しました UITextField
's Delegate Method textField:shouldChangeCharactersInRange:
要件を常に確認し、ボタンのステータスを更新します。
ここで、私の問題は、テキストフィールドの小さなクロスボタンをクリックすると、メソッドです。 textField:shouldChangeCharactersInRange:
呼ばれていません。そのため、必要なアクションがありません。クリアボタンのヒットイベントを識別するにはどうすればよいですか?
私が話していることを示すためのいくつかの写真。
初期段階:ここでは、テキストフィールドに文字がないため、「完了」ボタンが無効になっています
文字を入力すると、「完了」ボタンが有効になります
これで、[クリア]ボタンをクリックすると、[完了]ボタンが引き続き有効になっています。これは間違っています。
解決
テキストフィールドの現在の内容を削除する必要があるかどうかを代表者に尋ねます。
- (BOOL)textFieldShouldClear:(UITextField *)textField
パラメーター
textField
テキストを含むテキストフィールド。
返品値
YES
テキストフィールドの内容をクリアする必要がある場合。それ以外は、NO
.討論
テキストフィールドは、組み込みのクリアボタンを押すことに応じて、このメソッドを呼び出します。 (このボタンはデフォルトでは表示されませんが、の値を変更することで有効にすることができます
clearButtonMode
テキストフィールドのプロパティ。)このメソッドは、編集が開始され、clearsOnBeginEditing
テキストフィールドのプロパティはに設定されていますYES
.代表者によるこの方法の実装はオプションです。存在しない場合、この方法が返されたかのようにテキストがクリアされます
YES
。可用性* Available in iOS 2.0 and later.
uitextfield.hで宣言されました
他のヒント
使用できます textFieldShouldClear:
ユーザーがクリアボタンをタップするときに処理する委任方法。