Додавання кнопки «Очистити» до поля iPhone UITextField


175

Як ви додаєте ту маленьку кнопку "X" у правій частині UITextField, яка очищає текст? Я не можу знайти атрибут для додавання цього підрегулювання в Builder інтерфейсу в iPhone OS 2.2 SDK.

Примітка. У Xcode 4.x та новіших версіях (iPhone 3.0 SDK та новіших версій) це можна зробити в Interface Builder.

Відповіді:


329

Ця кнопка є вбудованим накладом, який надається UITextFieldкласом, але, як і для iOS 2.2 SDK, немає можливості встановити її через Interface Builder. Ви повинні це ввімкнути програмно.

Додайте десь цей рядок коду ( viewDidLoadнаприклад,):

Ціль-С

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Швидкий 5.0

myUITextField.clearButtonMode = .whileEditing

61

Ви також можете встановити це безпосередньо з Інтерфейсу Builder в Інспекторі атрибутів.

введіть тут опис зображення

Взято з XCode 5.1


1
Зауважте, що питання спеціально задає інформацію про версію 2.2 SDK, і зазначає, що ця опція доступна в Інтерфейс Builder в пізніших версіях.
Крістофер Джонсон

47

Swift 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

або навіть коротше:

textField.clearButtonMode = .whileEditing

Виправити тип перерахунку. Не слід починати з великої літери.
Т. Пасічник

35

ви можете додати спеціальну кнопку очищення та керувати розміром і всіма речами, використовуючи це:

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

Мета C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Швидкий:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;

6

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

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

6

це не працює, роби як я:

стрімкий:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

6

У Xcode 8 (8A218a):

Швидкий:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

Значення "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

У Xcode версії 8.1 (8B62) це можна зробити безпосередньо в інспекторі атрибутів. Виберіть текстове поле, а потім виберіть відповідний варіант у спадному вікні Очистити кнопку, який знаходиться в Інспекторі атрибутів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.