2008-11-26 94 views
128

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

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

回答

272

此按钮是由UITextField类提供的内置叠加层,但对于iPhone OS 2.2 SDK,无法通过Interface Builder对其进行设置。您必须以编程方式启用它。

加入这行代码某处(viewDidLoad中为例):

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing; 

UPDATE: Xcode的IB的最新版本不支持此属性。

+2

- 嗨。我可以在textField上编辑clearButtonMode的大小.. – NiKKi 2012-12-21 06:13:08

32

您可以添加自定义清除按钮和控制大小和使用这种每一件事情:

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]; 
38

您也可以从Interface Builder的属性检查器设置下,这直接。

enter image description here

从5.1的XCode

+1

请注意,该问题特别提到了有关2.2 SDK的问题,并指出此选项在更高版本的Interface Builder中可用。 – 2014-05-30 16:03:30

25

夫特3摘自:

textField.clearButtonMode = UITextFieldViewMode.WhileEditing 

或甚至更短:

textField.clearButtonMode = .whileEditing 
+0

修复枚举类型。不得从大写字母开始。 – 2017-06-20 11:40:06

6

目标C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing; 

斯威夫特:

txtUserNameTextfield.clearButtonMode = UITextFieldViewMode.WhileEditing; 
4

这不工作,不喜欢我:

迅速:

customTextField.clearButtonMode = UITextFieldViewMode.Always 

customTextField.clearsOnBeginEditing = true; 

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

在Xcode中8(8A218a):

Swift:

textField.clearButtonMode = UITextFieldViewMode.whileEditing; 

“W”从资本变为非资本“w”。

-2

在Xcode版本8.1(8B62)上,可以直接在Attributes Inspector中完成。选择textField,然后从清除按钮下拉框中选择适当的选项,它位于属性检查器中。