Dodanie przycisku „Clear” do iPhone UITextField


175

Jak dodać ten mały przycisk „X” po prawej stronie UITextField, który czyści tekst? Nie mogę znaleźć atrybutu do dodania tej kontroli podrzędnej w programie Interface Builder w zestawie SDK systemu iPhone OS 2.2.

Uwaga: w Xcode 4.xi nowszych (iPhone 3.0 SDK i nowsze) możesz to zrobić w programie Interface Builder.

Odpowiedzi:


329

Ten przycisk jest wbudowaną nakładką dostarczaną przez UITextFieldklasę, ale od SDK systemu iOS 2.2 nie ma możliwości ustawienia go za pomocą Interface Builder. Musisz włączyć to programowo.

Dodaj gdzieś ten wiersz kodu ( viewDidLoadna przykład):

Cel C

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift 5.0

myUITextField.clearButtonMode = .whileEditing

61

Możesz również ustawić to bezpośrednio w Interface Builder w Inspektorze atrybutów.

wprowadź opis obrazu tutaj

Zaczerpnięte z XCode 5.1


1
Zwróć uwagę, że pytanie dotyczy konkretnie 2.2 SDK i zauważa, że ​​ta opcja jest dostępna w Interface Builder w nowszych wersjach.
Kristopher Johnson

47

Swift 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

lub jeszcze krócej:

textField.clearButtonMode = .whileEditing

Napraw typ wyliczenia. Nie może zaczynać się od dużej litery.
T. Pasichnyk

35

możesz dodać niestandardowy przycisk wyczyść i kontrolować rozmiar i wszystko, używając tego:

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

Cel C :

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Szybki:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;

6

Swift 4 (na podstawie odpowiedzi Kristophera Johnsona)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

6

to nie działa, polub mnie:

szybki:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

6

W Xcode 8 (8A218a):

Szybki:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

„W” przeszedł od kapitału do „w” bez ograniczenia.


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

W Xcode w wersji 8.1 (8B62) można to zrobić bezpośrednio w Inspektorze atrybutów. Wybierz pole tekstowe, a następnie wybierz odpowiednią opcję z listy rozwijanej przycisku Wyczyść, która znajduje się w Inspektorze atrybutów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.