UITextField的键盘不会被忽略。不完全是

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UITextField的键盘不会被忽略。不完全是相关的知识,希望对你有一定的参考价值。

我在模态表单(iPad)中有一个表视图,其中一个单元格包含一个UITextField。我的视图控制器拥有对文本字段的引用,也是其委托。

当文本字段命中Return时,我告诉-resignFirstResponder里面的-textFieldShouldReturn:。在另一种情况下,我想强制它结束编辑,所以我告诉整个表视图到-endEditing:YES。然后我释放我对文本字段的本地引用,并重新加载行以用其他东西替换它。

在任何一种情况下,键盘都不会消失。我不知道出了什么问题,我不确定如何进一步调试。我从来没有遇到任何其他文本编辑的粘性键盘问题 - 第一个响应者辞职总是表现得如预期的那样。

有什么想法吗?谢谢。

答案

实施-disablesAutomaticKeyboardDismissal并返回NO。它适用于ios 6,但您必须在正确的控制器中实现它。如果你有一个带有文本字段的子控制器的模态表单导航控制器,那么它是需要方法实现的导航控制器,而不是子控件。

(另见Dismiss keyboard on IPAD

另一答案

Apple docs describe this exception

在iPad上,如果视图控制器使用“表单”样式以模态方式显示其视图,则键盘一旦显示,就不会隐藏,直到用户点击关闭键或模式视图控制器以编程方式解除。此行为的目的是避免在用户在大部分(但不完全是)文本字段的视图之间移动时过多的动画。

这恰好适用于此(iPad上的模态表单)。在这种情况下,显然不可能解雇键盘。超。 :

另一答案

由于disablesAutomaticKeyboard Dismissal覆盖在iOS 6上不起作用,我必须将每个文本字段的“Do End On Exit”事件连接到方法,然后在那里解除键盘,如下所示:

- (IBAction)doneEditing:(id)sender {

[sender endEditing:YES];

}

另一答案

disablesAutomaticKeyboardDismissal拒绝在iOS 7上为我工作。

但是......我设法通过简单地禁用屏幕上的UITextFields来解决这个问题。

我的解决方案是here

这甚至适用于Modal UIViewControllers。

另一答案

我刚刚发现了这种情况发生的独特情况。我认为当被解雇时将键盘留在屏幕上。我检查了所有内容,我的UITextFields代表已连接到我的视图等。试图在viewWillDisappear()中手动关闭键盘无法通过字段上的resignFirstResponder()或视图上的endEditing()来工作。

然后我意识到这是委托方法本身的字段验证代码。每次编辑在字段中结束时,我都会在textFieldShouldEndEditing委托方法中验证文本,以确保文本合理,就像这样,并且在验证之前不允许它们跳出字段。

  func textFieldShouldEndEditing(textField: UITextField) -> Bool
    {
        if self.validateField(textField) {
           return true
        } else {
          return false
        }
   }

因此,当用户返回上一个视图而不输入任何文本时,验证失败,文本字段不允许放弃它的第一个响应者状态,并且键盘在返回到上一个视图时仍保留在屏幕上。

这是一个不寻常的情况,但希望这将有助于遇到它的其他人。

另一答案

在swift中,只需给你的UITextField一个委托并生成textFieldShouldReturn(),见下面的例子 -

class ViewController: UIViewController, UITextFieldDelegate {
    func settingUpTextField() {
        textField.delegate = self;
        return;
    }
    ...
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder();
        return true;
    }
}

完成了!

以上是关于UITextField的键盘不会被忽略。不完全是的主要内容,如果未能解决你的问题,请参考以下文章

UITextfield在UITableViewCells中 - 关闭键盘

SwiftUI 从 UITextField 中关闭键盘

单击已显示键盘的第二个UITextField会错误地移动内容

UITextField 键盘不关闭

UITextField 光标和键盘问题

在键盘可见时,iOS按钮点击不会被触发?