UITextField clearButtonMode颜色

man*_*urt 14 uitextfield ios

我可以在textField上更改clearButtonMode的颜色吗?

theTextField.clearButtonMode = UITextFieldViewModeWhileEditing
Run Code Online (Sandbox Code Playgroud)

显示一个灰色深色的x来删除textField,

但我能用白色显示这个按钮吗?

谢谢

Ben*_*ris 32

在这种情况下,您需要创建自己的清晰按钮图像.我建议在Photoshop中截取清除按钮和编辑.

您可以拍摄该图像并使用图像尺寸创建UIButton.从那里你可以将它设置为UITextField的rightView.像这样:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"clear_button.png"] forState:UIControlStateNormal];
[button setFrame:CGRectMake(0.0f, 0.0f, 15.0f, 15.0f)]; // Required for iOS7
theTextField.rightView = button;
theTextField.rightViewMode = UITextFieldViewModeWhileEditing;
Run Code Online (Sandbox Code Playgroud)

我在没有语法检查的情况下键入了这个,在运行它之前你不想这样做.您还需要将clear_button.png替换为您的图像名称.

您还需要编写自己的方法来清除文本字段.

  • Apple应该提供一种优雅的方式来实现这一目标 (9认同)
  • 这不再适用于iOS 7.相反,您必须使用框架创建按钮. (3认同)

muk*_*ssi 8

更简洁的方法是使用此方法在UITextField上实现类别:

- (void)modifyClearButtonWithImage:(UIImage *)image {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:image forState:UIControlStateNormal];
    [button setFrame:CGRectMake(0.0f, 0.0f, 15.0f, 15.0f)];
    [button addTarget:self action:@selector(clear:) forControlEvents:UIControlEventTouchUpInside];
    self.rightView = button;
    self.rightViewMode = UITextFieldViewModeWhileEditing;
}

-(IBAction)clear:(id)sender{
    self.text = @"";
}
Run Code Online (Sandbox Code Playgroud)


Moh*_*diq 6

Swift版本:

extension UITextField {

    func modifyClearButtonWithImage(image : UIImage) {
        let clearButton = UIButton(type: .Custom)
        clearButton.setImage(image, forState: .Normal)
        clearButton.frame = CGRectMake(0, 0, 40, 40)
        clearButton.contentMode = .ScaleAspectFit
        clearButton.addTarget(self, action: #selector(UITextField.clear(_:)), forControlEvents: .TouchUpInside)
        self.rightView = clearButton
        self.rightViewMode = .WhileEditing
    }

    func clear(sender : AnyObject) {
        self.text = ""
    }

}
Run Code Online (Sandbox Code Playgroud)


小智 5

斯威夫特 4.1 版本

extension UITextField {
    func modifyClearButtonWithImage(image : UIImage) {
        let clearButton = UIButton(type: .custom)
        clearButton.setImage(image, for: .normal)
        clearButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
        clearButton.contentMode = .scaleAspectFit
        clearButton.addTarget(self, action: #selector(UITextField.clear(sender:) ), for: .touchUpInside)
        self.rightView = clearButton
        self.rightViewMode = .whileEditing
    }

    @objc func clear(sender : AnyObject) {
        self.text = ""
        sendActions(for: .editingChanged)
    }
}
Run Code Online (Sandbox Code Playgroud)