19

在 iPhone 中,我有一个视图,其中包含UITextField. 当我点击UITextField's 的清除按钮时,键盘被关闭而不是清除UITextField. 在 iPad 上它工作正常。我能做些什么来解决这个问题?

4

5 回答 5

48

只需清除该字段resignFirstResponder(如果您想隐藏键盘)并返回NO/false

注意:设置属性检查器的属性UITextField

清除按钮 -> 编辑时出现

所以它会在文本字段中编辑时显示清除按钮。

// 目标-C

-(BOOL)textFieldShouldClear:(UITextField *)textField
{
    textField.text = @"";
    [textField resignFirstResponder];
    return NO;
}

// 斯威夫特

func textFieldShouldClear(textField: UITextField) -> Bool {
    textField.text = ""
    textField.resignFirstResponder()
    return false
}
于 2014-02-14T05:57:54.320 回答
11

附加 uitextifield 的委托后尝试此代码

-(BOOL)textFieldShouldClear:(UITextField *)textField
{
     return true;
}
于 2012-07-05T06:18:51.617 回答
10

首先,检查与您相关的所有代码块UITextField(尤其是代码yourTextField.hidden = YES;

设置断点并分析UITextField您实施的每个委托。

( textFieldDidEndEditing, textFieldShouldEndEditing, textFieldShouldReturn.etc. )

或者

实现textFieldShouldClear委托并在此处编写代码以显示和清除您的UITextField

为此,您必须设置clearButtonMode如下,

yourTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
yourTextField.delegate = self;

//For active keyboard again
[yourTextField becomeFirstResponder];

然后实现textFieldShouldClear委托

你的班级.h

    @interface className : UIViewController <UITextFieldDelegate>

你的班级.m

-(BOOL)textFieldShouldClear:(UITextField *)textField {
    yourTextField.hidden = NO;
    yourTextField.text = @"";
    return YES;
}
于 2012-07-05T05:08:30.170 回答
5

只要确保你给了这两个

editingTextField.delegate = self;
editingTextField.clearButtonMode = UITextFieldViewModeWhileEditing;

仅当您需要进行一些自定义时才需要TextFieldShouldClear :-)

你在用这种方法做一些事情吗?

也许您正在此委托方法中调用 resignFirstResponder,这就是键盘被关闭的原因。

请通过委托方法,并检查您到底在做什么。

于 2012-07-06T09:15:11.367 回答
2

如果你有这个问题也会发生

yourTextField.clearButtonMode = UITextFieldViewModeNever;

检查此行并将其删除或更改查看模式..

于 2015-03-05T10:10:17.033 回答