Thêm nút Clear Clear vào một UITextField của iPhone


175

Làm thế nào để bạn thêm nút "X" nhỏ đó ở bên phải của UITextField để xóa văn bản? Tôi không thể tìm thấy một thuộc tính để thêm điều khiển phụ này trong Trình tạo giao diện trong SDK iPhone OS 2.2.

Lưu ý: Trong Xcode 4.x trở lên (SDK iPhone 3.0 trở lên), bạn có thể thực hiện việc này trong Trình tạo giao diện.

Câu trả lời:


328

Nút này là lớp phủ tích hợp được cung cấp bởi UITextFieldlớp, nhưng kể từ SDK iOS 2.2, không có cách nào để đặt nó thông qua Trình tạo giao diện. Bạn phải kích hoạt nó theo chương trình.

Thêm dòng mã này ở đâu đó ( viewDidLoadví dụ):

Mục tiêu-C

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift 5.0

myUITextField.clearButtonMode = .whileEditing

61

Bạn cũng có thể đặt điều này trực tiếp từ Trình tạo giao diện trong Trình theo dõi thuộc tính.

nhập mô tả hình ảnh ở đây

Lấy từ XCode 5.1


1
Lưu ý rằng câu hỏi hỏi cụ thể về SDK 2.2 và lưu ý rằng tùy chọn này có sẵn trong Trình tạo giao diện trong các phiên bản sau.
Kristopher Johnson

47

Swift 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

hoặc thậm chí ngắn hơn:

textField.clearButtonMode = .whileEditing

Sửa kiểu enum. Không được bắt đầu từ chữ in hoa.
T. Pasichnyk

35

bạn có thể thêm nút xóa tùy chỉnh và kiểm soát kích thước và mọi thứ bằng cách sử dụng:

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

Mục tiêu C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;

6

Swift 4 (phỏng theo câu trả lời của Kristopher Johnson)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

6

Điều này không hiệu quả, hãy làm như tôi:

nhanh:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

6

Trên Xcode 8 (8A218a):

Nhanh:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

Chữ "W" chuyển từ chữ hoa sang chữ hoa "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

Trên Xcode Phiên bản 8.1 (8B62), nó có thể được thực hiện trực tiếp trong Trình kiểm tra thuộc tính. Chọn textField và sau đó chọn tùy chọn thích hợp từ hộp thả xuống Xóa nút, nằm trong Thanh tra thuộc tính.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.