Menambahkan Tombol "Clear" ke iPhone UITextField


175

Bagaimana Anda menambahkan tombol "X" kecil di sisi kanan UITextField yang menghapus teks? Saya tidak dapat menemukan atribut untuk menambahkan sub-kontrol ini di Interface Builder di iPhone OS 2.2 SDK.

Catatan: Di Xcode 4.x dan yang lebih baru (iPhone 3.0 SDK dan yang lebih baru), Anda bisa melakukan ini di Interface Builder.

Jawaban:


329

Tombol ini adalah overlay internal yang disediakan oleh UITextFieldkelas, tetapi pada iOS 2.2 SDK, tidak ada cara untuk mengaturnya melalui Interface Builder. Anda harus mengaktifkannya secara terprogram.

Tambahkan baris kode ini di suatu tempat ( viewDidLoad, misalnya):

Objektif-C

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift 5.0

myUITextField.clearButtonMode = .whileEditing

61

Anda juga dapat mengatur ini langsung dari Interface Builder di bawah Inspektur Atribut.

masukkan deskripsi gambar di sini

Diambil dari XCode 5.1


1
Perhatikan bahwa pertanyaan ini secara khusus menanyakan tentang 2.2 SDK, dan mencatat bahwa opsi ini tersedia di Interface Builder di versi yang lebih baru.
Kristopher Johnson

47

Swift 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

atau bahkan lebih pendek:

textField.clearButtonMode = .whileEditing

Perbaiki tipe enum. Tidak boleh mulai dari huruf kapital.
T. Pasichnyk

35

Anda dapat menambahkan tombol hapus kustom dan mengontrol ukuran dan semuanya menggunakan ini:

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

Sasaran C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Cepat:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;

6

Swift 4 (diadaptasi dari jawaban Kristopher Johnson)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

6

ini tidak berhasil, suka saya:

cepat:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

6

Pada Xcode 8 (8A218a):

Cepat:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

"W" beralih dari modal ke non-cap "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

Pada Xcode Versi 8.1 (8B62) dapat dilakukan langsung di Atribut Inspektur. Pilih textField dan kemudian pilih opsi yang sesuai dari kotak drop down Clear Button, yang terletak di Attributes Inspector.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.