「クリア」ボタンをiPhone UITextFieldに追加する


175

テキストをクリアするUITextFieldの右側に小さな「X」ボタンをどのように追加しますか?iPhone OS 2.2 SDKのInterface Builderでこのサブコントロールを追加するための属性が見つかりません。

注: Xcode 4.x以降(iPhone 3.0 SDK以降)では、これをInterface Builderで実行できます。

回答:


328

このボタンは、UITextFieldクラスによって提供される組み込みのオーバーレイですが、iOS 2.2 SDKの時点では、Interface Builderを介して設定する方法はありません。プログラムで有効にする必要があります。

次のコード行をどこかに追加します(viewDidLoadたとえば)。

Objective-C

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift 5.0

myUITextField.clearButtonMode = .whileEditing

61

これは、属性インスペクターのインターフェイスビルダーから直接設定することもできます。

ここに画像の説明を入力してください

XCode 5.1から取得


1
この質問では2.2 SDKについて具体的に尋ねられ、このオプションはそれ以降のバージョンのInterface Builderで使用できることに注意してください。
クリストファージョンソン

47

Swift 4以降:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

またはさらに短い:

textField.clearButtonMode = .whileEditing

列挙型を修正します。大文字で始めることはできません。
T. Pasichnyk 2017年

35

カスタムクリアボタンを追加し、これを使用してサイズとすべてのものを制御できます。

UIButton *clearButton = [UIButton buttonWithType:UIButtonTypeCustom];
[clearButton setImage:img forState:UIControlStateNormal];
[clearButton setFrame:frame];
[clearButton addTarget:self action:@selector(clearTextField:) forControlEvents:UIControlEventTouchUpInside];

textField.rightViewMode = UITextFieldViewModeAlways; //can be changed to UITextFieldViewModeNever,    UITextFieldViewModeWhileEditing,   UITextFieldViewModeUnlessEditing
[textField setRightView:clearButton];

7

目的C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

スウィフト:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;

6

Swift 4(Kristopher Johnsonの回答からの抜粋)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

6

これは機能しません、私のようにしてください:

迅速:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

func textFieldShouldClear(textField: UITextField) -> Bool {
    return true
}

6

Xcode 8(8A218a)の場合:

迅速:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

「W」は大文字から非大文字「w」になりました。


0
  func clear_btn(box_is : UITextField){
    box_is.clearButtonMode = .always
    if let clearButton = box_is.value(forKey: "_clearButton") as? UIButton {
        let templateImage =  clearButton.imageView?.image?.withRenderingMode(.alwaysTemplate)

        clearButton.setImage(templateImage, for: .normal)
        clearButton.setImage(templateImage, for: .highlighted)

        clearButton.tintColor = .white

     }
}

-4

Xcodeバージョン8.1(8B62)では、属性インスペクターで直接実行できます。textFieldを選択し、属性インスペクターにある[ボタンのクリア]ドロップダウンボックスから適切なオプションを選択します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.