UITextField的键盘不会消失。不,真的
我有一个模式表单(iPad)的表格视图,其中一个单元格包含一个UITextField。我的视图控制器持有对文本字段的引用,也是它的代表。UITextField的键盘不会消失。不,真的
当文本字段命中返回时,我将它告知-textFieldShouldReturn:
内部的-resignFirstResponder
。在另一种情况下,我想迫使它结束编辑,所以我把整个表格视为-endEditing:YES
。之后,我将我的本地引用发布到文本字段,并重新加载行以将其替换为其他内容。
无论哪种情况,键盘都不会消失。我不知道什么是错,我不知道如何进一步调试。我从来没有遇到任何其他文本编辑过程中的粘性键盘问题 - 第一个响应者的辞职一直按预期行事。
有什么想法?谢谢。
执行-disablesAutomaticKeyboardDismissal
并返回NO。它确实在iOS 6上工作,但你必须在正确的控制器中实现它。如果您有一个带有具有文本字段的子控制器的模式表单导航控制器,那么需要实现方法的导航控制器不是孩子。
哦,是的!终于为我解决了这个问题。记得在视图控制器中设置这个视图控制器,其中包含文本字段的视图控制器。 –
在iPad,如果一个视图控制器模态使用 “形式片”的风格,键盘,显示一次呈现视图时,不隐藏,直到 用户抽头解除密钥或模态视图控制器以编程方式解除 。此行为的目的是为了避免用户在视图之间移动过多的动画,这些视图主要是 ,但不完全是文本字段。
这恰好适用于此(iPad上的模态表单)。在这种情况下显然是不可能解雇键盘的。超。 :\
由于disablesAutomaticKeyboardDismissal倍率不iOS6的工作,我必须每个文本字段的“真的结束在退出”事件连接到一个方法,然后取消键盘那里,就像这样:
- (IBAction)doneEditing:(id)sender {
[sender endEditing:YES];
}
的disablesAutomaticKeyboardDismissal
拒绝为我工作在iOS 7
但是...我设法通过简单禁用屏幕上的UITextFields来解决这个问题。
我的解决方案描述为here。
这甚至适用于Modal UIViewController
s。
我刚刚发现这种情况发生的独特情况。我有一种观点,即解散时将键盘放在屏幕上。我检查了一切,我的UITextFields代表已连接到我的视图等。尝试在viewWillDisappear()中手动关闭键盘无效,无论是通过字段上的resignFirstResponder()还是视图上的endEditing()。
然后我意识到这是我在代理方法本身的字段验证代码。每次编辑在字段中结束时,我都会验证textFieldShouldEndEditing委托方法中的文本,以确保文本是合理的,就像这样,并且不允许它们在字段验证前退出该字段。
func textFieldShouldEndEditing(textField: UITextField) -> Bool
{
if self.validateField(textField) {
return true
} else {
return false
}
}
因此,当用户返回到以前的观点不输入任何文字,验证失败,该文本字段是不允许放弃它的第一个响应者的地位,以及键盘仍然在屏幕上,他们返回到前一个视图。
这是一个不寻常的情况,但希望这会帮助其他人遇到它。
或者只是'return self.validateField(textField)' – Alnitak
在迅速只是给你的UITextField的委托,并产生textFieldShouldReturn(),请参阅下面的例子 -
class ViewController: UIViewController, UITextFieldDelegate {
func settingUpTextField() {
textField.delegate = self;
return;
}
...
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder();
return true;
}
}
完成!
您的代码是否运行?你是否在正确的文本框上调用了resignFirstResponder? – Eiko
是的。我确保在我称之为'-resignFirstResponder'的textField上'isFirstResponder'为YES。 –