İPhone UITextField aygıtına “Temizle” Düğmesini Ekleme


175

UITextField öğesinin sağ tarafındaki metni temizleyen küçük "X" düğmesini nasıl eklersiniz? İPhone OS 2.2 SDK'sındaki Interface Builder'da bu alt denetimi eklemek için bir özellik bulamıyorum.

Not: Xcode 4.x ve üstü sürümlerde (iPhone 3.0 SDK ve üstü), bunu Interface Builder'da yapabilirsiniz.

Yanıtlar:


329

Bu düğme, UITextFieldsınıf tarafından sağlanan yerleşik bir kaplamadır , ancak iOS 2.2 SDK'dan itibaren, Arayüz Oluşturucu aracılığıyla ayarlamanın herhangi bir yolu yoktur. Programlı olarak etkinleştirmeniz gerekir.

Bu kod satırını bir yere ekleyin ( viewDidLoadörneğin):

Objective-C

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift 5.0

myUITextField.clearButtonMode = .whileEditing

61

Bunu doğrudan Özellikler Denetçisi altındaki Arayüz Oluşturucu'dan da ayarlayabilirsiniz.

resim açıklamasını buraya girin

XCode 5.1'den Alınmıştır


1
Sorunun 2.2 SDK hakkında özellikle sorulduğunu ve bu seçeneğin daha sonraki sürümlerde Arayüz Oluşturucu'da kullanılabileceğini unutmayın.
Kristopher Johnson

47

Swift 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

veya daha kısa:

textField.clearButtonMode = .whileEditing

Numaralandırma türünü düzeltin. Büyük harfle başlamamalıdır.
T. Pasichnyk

35

bunu kullanarak özel temizle düğmesi ekleyebilir ve boyutu ve her şeyi kontrol edebilirsiniz:

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

Hedef C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;

6

Swift 4 (Kristopher Johnson'ın cevabından uyarlandı)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

6

bu işe yaramıyor, benim gibi yap:

swift:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

6

Xcode 8'de (8A218a):

Swift:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

"W" sermayeden kapaksız "w" ye gitti.


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 Sürüm 8.1'de (8B62) doğrudan Nitelikler Denetçisi'nden yapılabilir. TextField öğesini seçin ve ardından Nitelikler Müfettişinde bulunan Düğmeyi Temizle açılır kutusundan uygun seçeneği belirleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.