将“清除”按钮添加到iPhone UITextField

时间:2008-11-26 08:44:36

标签: ios cocoa-touch uitextfield uikit

如何在清除文本的UITextField右侧添加那个小“X”按钮?我无法在iPhone OS 2.2 SDK的Interface Builder中找到用于添加此子控件的属性。

注意:在Xcode 4.x及更高版本(iPhone 3.0 SDK及更高版本)中,您可以在Interface Builder中执行此操作。

10 个答案:

答案 0 :(得分:303)

此按钮是由UITextField类提供的内置叠加层,但是从iPhone OS 2.2 SDK开始,没有任何方法可以通过Interface Builder进行设置。您必须以编程方式启用它。

在某处添加这行代码(例如viewDidLoad):

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

更新:最新版本的Xcode IB确实支持此属性。

答案 1 :(得分:56)

您也可以直接在Interfaces Inspector下的Interface Builder中设置它。

enter image description here

取自XCode 5.1

答案 2 :(得分:37)

斯威夫特3:

textField.clearButtonMode = UITextFieldViewMode.whileEditing

甚至更短:

textField.clearButtonMode = .whileEditing

答案 3 :(得分: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];

答案 4 :(得分:7)

目标C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
斯威夫特:

txtUserNameTextfield.clearButtonMode = UITextFieldViewMode.WhileEditing;

答案 5 :(得分:6)

迅速4 (改编自Kristopher Johnson的答案)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

答案 6 :(得分:5)

这不工作,跟我一样:

  

迅速:

customTextField.clearButtonMode = UITextFieldViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

答案 7 :(得分:4)

在Xcode 8(8A218a)上:

斯威夫特:

class Array
  alias_method :new_map_method, :map
end

" W"从资本到非上限" w"。

答案 8 :(得分: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

     }
}

答案 9 :(得分:-4)

在Xcode版本8.1(8B62)上,可以直接在Attributes Inspector中完成。选择textField,然后从Clear Button下拉框中选择适当的选项,该选项位于Attributes Inspector中。