当它已经可见时关闭键盘

Posted

技术标签:

【中文标题】当它已经可见时关闭键盘【英文标题】:Close Keyboard when it's already visible 【发布时间】:2016-05-20 08:49:30 【问题描述】:

当我有超过 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 这样的事件,但不能像我想要的那样做

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

【问题讨论】:

您为什么要辞去第一响应者的职务或在开始编辑委托方法中结束编辑?这不会导致永远无法输入文字吗? @jrturton 我想要当我触摸我的 TextField2 时它仍然有闪烁的光标但没有显示键盘 这是为什么呢?用户还有其他方法可以将文本输入文本字段吗? 参考@simplebob 答案。这就是你的问题的解决方案。 self.view.endEditing(false) 永远不会关闭键盘。 【参考方案1】:

试试这个:

func textFieldDidBeginEditing(textField: UITextField) 
        if (textField.tag == 2) 
            self.view.endEditing(true)
         else 
            textField.becomeFirstResponder()
        

self.view.endEditing(true) 不会显示键盘,它实际上会尝试隐藏它,迫使第一响应者辞职。

【讨论】:

【参考方案2】:

您也可以使用下面的文本字段委托方法,

func textFieldShouldReturn(textField: UITextField) -> Bool

    if (textField == self.TextField1) 
        self.TextField2.becomeFirstResponder()
    
    else 
        textField.resignFirstResponder()
        self.view.endEditing(true)
    
    return true

希望这会对你有所帮助。

【讨论】:

【参考方案3】:

我认为你没有在这个类上设置 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()
    

【讨论】:

【参考方案4】:

试试下面的代码。

-(BOOL) textFieldShouldBeginEditing:(UITextField *)textField

     if(textField.tag == 2)
     
          [[self.view viewWithTag:1] resignFirstResponder];
          return false;
     
     else
     
          return true;
     

【讨论】:

我写代码的时候打错了,代码已经和2比较标签了

以上是关于当它已经可见时关闭键盘的主要内容,如果未能解决你的问题,请参考以下文章

当软键盘可见时,无法单击按钮

我应该在关闭视图之前关闭键盘吗?

结合点击关闭键盘、键盘避免视图和提交按钮

检测后退按钮但不关闭对话框片段

如何使用Java关闭appium中的键盘?

关闭时如何将 UIToolBar 修复到键盘顶部