【发布时间】:2015-12-28 12:01:30
【问题描述】:
我将ViewController 设置为UITextField 的代表。无论我怎么尝试,调用textFieldShouldReturn时都无法隐藏键盘。
我的viewDidLoad 方法:
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(newModelField)
newModelField.delegate = self
self.presetTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "presetCell")
//self.view.becomeFirstResponder()
}
还有我的textFieldShouldReturn 方法:
func textFieldShouldReturn(textField: UITextField) -> Bool {
//UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil)
if(textField.text! != ""){
items.append(textField.text!)
presetTableView.reloadData()
textField.text! = ""
//self.view.resignFirstResponder()
//self.addView.resignFirstResponder()
//textField.endEditing(true)
//self.view.endEditing(true)
UIApplication.sharedApplication().delegate?.window?!.endEditing(true)
return false
}
return true
}
您可以从我注释掉的尝试中看到我已经尝试了很多不同的修复。我知道textFieldShouldReturn 在使用打印语句进行调试后被调用。我不知道为什么键盘不会隐藏。
我尝试交换 return true 和 false 语句。我尝试从情节提要中设置委托。我尝试从情节提要中删除 textField,清理并重新添加它。我尝试了对 resignFirstResponder 和 endEditing 的所有顶级调用,以及对文本字段和视图的这些函数的调用。
【问题讨论】:
-
我通过在两个函数 textFieldShouldEndEditing 和 textFieldShouldReturn 中调用 self.view.endEditing(true) 解决了这个问题。不知道为什么,但这似乎是唯一可行的方法。
标签: ios swift uiviewcontroller keyboard uitextfield