当我有超过1个UITextField时,我有一个关闭键盘的问题。
我有2个TextField:TextField1
和TextField2
,我给每个人标记为1
和2
我想制作如果标签等于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
之类的活动,但不能像我想要的那样做
请帮我知道如何在键盘可见时隐藏
答案 0 :(得分:2)
试试这个:
func textFieldDidBeginEditing(textField: UITextField) {
if (textField.tag == 2) {
self.view.endEditing(true)
} else {
textField.becomeFirstResponder()
}
}
self.view.endEditing(true)
不会显示键盘,它实际上会尝试隐藏它,迫使第一响应者辞职。
答案 1 :(得分:0)
尝试使用以下代码。
-(BOOL) textFieldShouldBeginEditing:(UITextField *)textField
{
if(textField.tag == 2)
{
[[self.view viewWithTag:1] resignFirstResponder];
return false;
}
else
{
return true;
}
}
答案 2 :(得分:0)
您也可以使用下面的textfield delegate方法
func textFieldShouldReturn(textField: UITextField) -> Bool
{
if (textField == self.TextField1) {
self.TextField2.becomeFirstResponder()
}
else {
textField.resignFirstResponder()
self.view.endEditing(true)
}
return true
}
希望这会对你有所帮助。
答案 3 :(得分:0)
我认为你没有在这个类上设置UITextFieldDelgate,所以在viewDidLoad()
override func viewDidLoad() {
TextField1.delegate = self
TextField2.delegate = self
}
然后像这样添加 textFieldDidBeginEditing : -
func textFieldDidBeginEditing(textField: UITextField) {
if (textField.tag == 2) {
self.view.endEditing(true)
} else {
textField.becomeFirstResponder()
}
}