web-dev-qa-db-ja.com

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

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

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

163

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

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

Objective-C

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift 5.

myUITextField.clearButtonMode = UITextField.ViewMode.whileEditing

PDATE: Xcode IBの最新バージョンはこのプロパティをサポートします。

305

これは、Interfaces BuilderのAttributes Inspectorから直接設定することもできます。

enter image description here

XCode 5.1から取得

57
Nicholas Harlen

Swift 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

またはさらに短い:

textField.clearButtonMode = .whileEditing
43
Esqarrouth

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

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];
35
Hossam Ghareeb

目標C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

スイフト:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;
7
PT Vyas

これは動作しません、私のように:

迅速:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

Swift 4(クリストファー・ジョンソンの答えから適応)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never
6
Edouard Barbier

Xcode 8(8A218a)の場合:

迅速:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

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

5
Aidan.C
  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

     }
}
0
Pardeep Kumar