如何在清除文本的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中执行此操作。
Answers:
该按钮是UITextField
该类提供的内置叠加层,但是从iOS 2.2 SDK开始,没有任何方法可以通过Interface Builder进行设置。您必须以编程方式启用它。
将以下代码行添加到某处(viewDidLoad
例如):
目标C
myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
斯威夫特5.0
myUITextField.clearButtonMode = .whileEditing
迅捷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];
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
}
}