如何在 UITextField 右侧添加那个小“X”按钮来清除文本?我在 iPhone OS 2.2 SDK 的 Interface Builder 中找不到用于添加此子控件的属性。
注意:在 Xcode 4.x 及更高版本(iPhone 3.0 SDK 及更高版本)中,您可以在 Interface Builder 中执行此操作。
如何在 UITextField 右侧添加那个小“X”按钮来清除文本?我在 iPhone OS 2.2 SDK 的 Interface Builder 中找不到用于添加此子控件的属性。
注意:在 Xcode 4.x 及更高版本(iPhone 3.0 SDK 及更高版本)中,您可以在 Interface Builder 中执行此操作。
这个按钮是类提供的内置覆盖UITextField
,但是从 iOS 2.2 SDK 开始,没有任何方法可以通过 Interface Builder 设置它。您必须以编程方式启用它。
在某处添加这行代码(viewDidLoad
例如):
Objective-C
myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
斯威夫特 5.0
myUITextField.clearButtonMode = .whileEditing
您也可以直接从 Attributes Inspector 下的 Interface Builder 进行设置。
取自 XCode 5.1
斯威夫特 4+:
textField.clearButtonMode = UITextField.ViewMode.whileEditing
甚至更短:
textField.clearButtonMode = .whileEditing
您可以使用以下方法添加自定义清除按钮并控制大小和所有内容:
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:
self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
斯威夫特:
txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;
这不起作用,像我一样:
迅速:
customTextField.clearButtonMode = UITextField.ViewMode.Always
customTextField.clearsOnBeginEditing = true;
func textFieldShouldClear(textField: UITextField) -> Bool {
return true
}
Swift 4(改编自 Kristopher Johnson 的回答)
textfield.clearButtonMode = .always
textfield.clearButtonMode = .whileEditing
textfield.clearButtonMode = .unlessEditing
textfield.clearButtonMode = .never
在 Xcode 8 (8A218a) 上:
迅速:
textField.clearButtonMode = UITextField.ViewMode.whileEditing;
“W”从大写变为非大写“w”。
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
}
}
使用下面的代码行。如果 rightView 有没有显示清除按钮。
self.txtField.rightView = nil
self.txtField.rightViewMode = .never
self.txtField.clearButtonMode = UITextField.ViewMode.always
在 Xcode 版本 8.1 (8B62) 上,它可以直接在 Attributes Inspector 中完成。选择 textField,然后从位于 Attributes Inspector 中的 Clear Button 下拉框中选择适当的选项。