在 iPhone 中,我有一个视图,其中包含UITextField
. 当我点击UITextField
's 的清除按钮时,键盘被关闭而不是清除UITextField
. 在 iPad 上它工作正常。我能做些什么来解决这个问题?
5 回答
只需清除该字段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
}
附加 uitextifield 的委托后尝试此代码
-(BOOL)textFieldShouldClear:(UITextField *)textField
{
return true;
}
首先,检查与您相关的所有代码块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;
}
只要确保你给了这两个
editingTextField.delegate = self;
editingTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
仅当您需要进行一些自定义时才需要TextFieldShouldClear :-)
你在用这种方法做一些事情吗?
也许您正在此委托方法中调用 resignFirstResponder,这就是键盘被关闭的原因。
请通过委托方法,并检查您到底在做什么。
如果你有这个问题也会发生
yourTextField.clearButtonMode = UITextFieldViewModeNever;
检查此行并将其删除或更改查看模式..