Добавление кнопки "Очистить" на iPhone UITextField

Как вы добавляете эту маленькую кнопку "X" в правой части UITextField, которая очищает текст? Я не могу найти атрибут для добавления этого субконтроля в Interface Builder в SDK iPhone OS 2.2.

Примечание.. В Xcode 4.x и более поздних версиях (SDK SD 3.0 и выше) вы можете сделать это в Interface Builder.

Ответ 1

Эта кнопка является встроенным оверлеем, предоставляемым классом UITextField, но в случае iPhone OS 2.2 SDK ее невозможно установить с помощью Interface Builder. Вы должны включить его программно.

Добавьте эту строку кода куда-нибудь (например, viewDidLoad):

Objective-C

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift 5.0

myUITextField.clearButtonMode = UITextField.ViewMode.whileEditing

ОБНОВЛЕНИЕ: Последняя версия Xcode IB поддерживает это свойство.

Ответ 2

Вы также можете установить это прямо из Interface Builder в Инспекторе атрибутов.

enter image description here

Взято из XCode 5.1

Ответ 3

Свифт 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

или даже короче:

textField.clearButtonMode = .whileEditing

Ответ 4

вы можете добавить пользовательскую кнопку очистки и контролировать размер и все, используя это:

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];

Ответ 5

Цель C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Свифт:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;

Ответ 6

это не работает, делай как я:

скоро:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

Ответ 7

На Xcode 8 (8A218a):

Swift:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

Буква "W" перешла из заглавной буквы в букву "w".

Ответ 8

Swift 4 (адаптировано из ответа Кристофера Джонсона)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

Ответ 9

  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

     }
}

Ответ 10

В Xcode версии 8.1 (8B62) это можно сделать непосредственно в Attributes Inspector. Выберите textField, а затем выберите соответствующую опцию из раскрывающегося списка Кнопка Clear, который находится в Attributes Inspector.