Добавление кнопки «Очистить» в iPhone UITextField - PullRequest
161 голосов
/ 26 ноября 2008

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

Примечание: В Xcode 4.x и более поздних версиях (iPhone 3.0 SDK и более поздних) вы можете сделать это в Интерфейсном Разработчике.

Ответы [ 10 ]

303 голосов
/ 26 ноября 2008

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

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

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

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

56 голосов
/ 30 мая 2014

Вы также можете установить это непосредственно из Интерфейсного Разработчика в Инспекторе Атрибутов.

enter image description here

Взято из XCode 5.1

39 голосов
/ 06 октября 2015

Свифт 3:

textField.clearButtonMode = UITextFieldViewMode.whileEditing

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

textField.clearButtonMode = .whileEditing
35 голосов
/ 06 августа 2013

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

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 голосов
/ 03 февраля 2016

Цель C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift:

txtUserNameTextfield.clearButtonMode = UITextFieldViewMode.WhileEditing;
6 голосов
/ 22 октября 2018

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

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never
5 голосов
/ 23 июня 2016

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

быстрое:

customTextField.clearButtonMode = UITextFieldViewMode.Always

customTextField.clearsOnBeginEditing = true;

func textFieldShouldClear(textField: UITextField) -> Bool {
    return true
}
4 голосов
/ 21 сентября 2016

В Xcode 8 (8A218a):

Свифт:

textField.clearButtonMode = UITextFieldViewMode.whileEditing;

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

0 голосов
/ 28 мая 2018
  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 голосов
/ 05 ноября 2016

На Версии Xcode 8.1 (8B62) это может быть сделано непосредственно в Инспекторе Атрибутов. Выберите textField, а затем выберите соответствующий параметр в раскрывающемся списке «Кнопка очистки», который находится в инспекторе атрибутов.

...