การเพิ่มปุ่ม“ ล้าง” ให้กับ iPhone UITextField


175

คุณจะเพิ่มปุ่ม "X" เล็กน้อยที่ด้านขวาของ UITextField ที่ล้างข้อความได้อย่างไร ฉันไม่พบคุณลักษณะสำหรับการเพิ่มการควบคุมย่อยใน Interface Builder ใน iPhone OS 2.2 SDK

หมายเหตุ:ใน Xcode 4.x และใหม่กว่า (iPhone 3.0 SDK และใหม่กว่า) คุณสามารถทำได้ใน Interface Builder

คำตอบ:


329

ปุ่มนี้เป็นภาพซ้อนทับในตัวที่จัดทำโดยUITextFieldชั้นเรียน แต่ใน iOS 2.2 SDK ไม่มีวิธีการตั้งค่าผ่านตัวสร้างส่วนต่อประสาน คุณต้องเปิดใช้งานโดยทางโปรแกรม

เพิ่มบรรทัดของรหัสนี้ที่ใดที่หนึ่ง ( viewDidLoadตัวอย่างเช่น):

Objective-C

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

สวิฟท์ 5.0

myUITextField.clearButtonMode = .whileEditing

61

คุณยังสามารถตั้งค่านี้ได้โดยตรงจากตัวสร้างส่วนต่อประสานภายใต้ตัวตรวจสอบแอตทริบิวต์

ป้อนคำอธิบายรูปภาพที่นี่

นำมาจาก XCode 5.1


1
โปรดทราบว่าคำถามนี้ถามเกี่ยวกับ 2.2 SDK โดยเฉพาะและโปรดทราบว่าตัวเลือกนี้มีให้ใน Interface Builder ในรุ่นที่ใหม่กว่า
Kristopher Johnson

47

Swift 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

หรือสั้นกว่า:

textField.clearButtonMode = .whileEditing

แก้ไขประเภท enum ต้องไม่เริ่มต้นด้วยอักษรตัวใหญ่
T. Pasichnyk

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 (ดัดแปลงมาจากคำตอบของ Kristopher Johnson)

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" เปลี่ยนจากทุนเป็นไม่ใช่ "cap"


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) สามารถทำได้โดยตรงในแอตทริบิวต์ตัวตรวจสอบ เลือกฟิลด์ข้อความและจากนั้นเลือกตัวเลือกที่เหมาะสมจากปุ่มล้างลงกล่องซึ่งอยู่ในแอตทริบิวต์ตรวจสอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.