2008-11-26 99 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,然後從清除按鈕下拉框中選擇適當的選項,它位於屬性檢查器中。