在不可编辑的UITextField中显示清除按钮

时间:2017-05-11 22:02:28

标签: ios objective-c

我向用户显示UITextField,此文本字段中的文本由不同的控制器更新。

用户无法在此UITextField中输入内容。我通过以下方式确保了这一点:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    return NO;
}

但是我想在文本字段中显示清晰的图标,以便用户可以清除文本字段中的值。我通过以下方式做到这一点:

_inputField.clearButtonMode = UITextFieldViewModeAlways;

但是当里面有文字时,清除按钮不显示:(

知道我可能做错了吗?

3 个答案:

答案 0 :(得分:0)

试试这个:
customTextField.clearButtonMode = UITextFieldViewMode.Always

customTextField.clearsOnBeginEditing = true;

func textFieldShouldClear(textField:UITextField) - >布尔{     返回true }

答案 1 :(得分:0)

您需要创建一个自定义按钮并将其添加到textfield的rightView

UIButton *clearButton = [UIButton buttonWithType:UIButtonTypeCustom];
[clearButton setImage:[UIImage imageNamed:@"delete.png"] forState:UIControlStateNormal];
[clearButton setFrame:CGRectMake(0,0,45,45)];
// If you need action
[clearButton addTarget:self action:@selector(clearTextField) forControlEvents:UIControlEventTouchUpInside];


 _inputField.rightViewMode = UITextFieldViewModeAlways;
 _inputField.rightView = clearButton;
 _inputField.rightView.hidden = NO;

答案 2 :(得分:0)

我认为您忘记添加UITextFieldDelegate并将委托设置为textField

_inputField.delegate = self;