当键盘已经可见时关闭键盘

时间:2016-05-20 08:49:31

标签: ios swift uitextfield uikeyboard uitextviewdelegate

当我有超过1个UITextField时,我有一个关闭键盘的问题。

我有2个TextField:TextField1TextField2,我给每个人标记为12

我想制作如果标签等于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 BeginEditing Changed之类的活动,但不能像我想要的那样做

请帮我知道如何在键盘可见时隐藏

4 个答案:

答案 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()
    }

}