Adding the “Clear” Button to an iPhone UITextField
如何在清除文本的UITextField的右侧添加小" X"按钮? 我在iPhone OS 2.2 SDK的Interface Builder中找不到用于添加此子控件的属性。
注意:在Xcode 4.x和更高版本(iPhone 3.0 SDK和更高版本)中,可以在Interface Builder中执行此操作。
此按钮是UITextField类提供的内置叠加层,但是从iPhone OS 2.2 SDK开始,没有任何方法可以通过Interface Builder进行设置。您必须以编程方式启用它。
将以下代码行添加到某处(例如,viewDidLoad):
目标C
1 | myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing; |
斯威夫特5.0
1 | myUITextField.clearButtonMode = UITextField.ViewMode.whileEditing |
更新:最新版本的Xcode IB确实支持此属性。
您也可以直接在"属性"检查器下的"界面生成器"中进行设置。
取自XCode 5.1
迅捷4+:
1 | textField.clearButtonMode = UITextField.ViewMode.whileEditing |
甚至更短:
1 | textField.clearButtonMode = .whileEditing |
您可以使用以下方法添加自定义清除按钮并控制大小和所有内容:
1 2 3 4 5 6 7 | 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]; |
目标C:
1 | self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing; |
斯威夫特:
1 | txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing; |
斯威夫特4(改编自克里斯托弗·约翰逊的答案)
1 2 3 4 5 6 7 | textfield.clearButtonMode = .always textfield.clearButtonMode = .whileEditing textfield.clearButtonMode = .unlessEditing textfield.clearButtonMode = .never |
在Xcode 8(8A218a)上:
迅速:
1 | textField.clearButtonMode = UITextField.ViewMode.whileEditing; |
" W"从大写字母变为非大写的" w"。
这不起作用,像我一样做:
swift:
1 2 3 4 5 6 7 | customTextField.clearButtonMode = UITextField.ViewMode.Always customTextField.clearsOnBeginEditing = true; func textFieldShouldClear(textField: UITextField) -> Bool { return true } |
1 2 3 4 5 6 7 8 9 10 11 12 | 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 } } |
在Xcode版本8.1(8B62)上,可以直接在Attributes Inspector中完成。选择textField,然后从"属性检查器"中的"清除按钮"下拉框中选择适当的选项。