当我有超过 1 个 UITextField 时,我关闭键盘时遇到问题。
我有 2 个文本字段:TextField1
和 TextField2
,我给它们中的每一个标签1
和2
如果我触摸标签等于 1 的文本字段,键盘再次可见,这适用于我的代码,但是当我将其转回时,代码不像我想要的那样,我先触摸TextField1
然后TextField2
键盘仍然可见并且不隐藏
我的代码是这样的
func textFieldDidBeginEditing(textField: UITextField) {
if (textField.tag == 2) {
self.view.endEditing(false)
textField.resignFirstResponder()
} else {
self.view.endEditing(true)
}
}
我也尝试使用Editing Did Begin
和Editing Changed
等事件,但无法按照我想要的方式做
请帮助我如何在键盘已经可见时隐藏键盘
试试这个:
func textFieldDidBeginEditing(textField: UITextField) {
if (textField.tag == 2) {
self.view.endEditing(true)
} else {
textField.becomeFirstResponder()
}
}
self.view.endEditing(true)
不会显示键盘,它实际上会尝试隐藏它,迫使第一响应者辞职。
您也可以像使用以下文本字段委托方法一样执行此操作,
func textFieldShouldReturn(textField: UITextField) -> Bool
{
if (textField == self.TextField1) {
self.TextField2.becomeFirstResponder()
}
else {
textField.resignFirstResponder()
self.view.endEditing(true)
}
return true
}
希望这对您有所帮助。
我认为你没有在这个类上设置 UITextFieldDelgate,所以在 viewDidLoad()
override func viewDidLoad() {
TextField1.delegate = self
TextField2.delegate = self
}
然后添加文本字段开始编辑,如下所示:-
func textFieldDidBeginEditing(textField: UITextField) {
if (textField.tag == 2) {
self.view.endEditing(true)
} else {
textField.becomeFirstResponder()
}
}
尝试使用以下代码。
-(BOOL) textFieldShouldBeginEditing:(UITextField *)textField
{
if(textField.tag == 2)
{
[[self.view viewWithTag:1] resignFirstResponder];
return false;
}
else
{
return true;
}
}