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



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

我有 2 个文本字段: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等事件,但无法按照我想要的方式做

请帮助我如何在键盘已经可见时隐藏键盘

试试这个:

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;
     }
}

相关内容

  • 没有找到相关文章

最新更新