【发布时间】:2017-02-27 05:49:55
【问题描述】:
这是我的 SecondViewController 类:
class SecondViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var txtNewItem: UITextField!
@IBOutlet weak var lblResult: UILabel!
@IBAction func btnAddNewItem(_ sender: Any) {
let itemsObject = UserDefaults.standard.object(forKey: "items")
var items:[String]
if let tmpItem = itemsObject as? [String] {
if txtNewItem.text == "" {
//Alert message if empty txtNewItem is ""
} else {
items = tmpItem
items.append(txtNewItem.text!)
UserDefaults.standard.set(items, forKey: "items")
}
} else {
items = [txtNewItem.text!]
UserDefaults.standard.set(items, forKey: "items")
}
txtNewItem.text = ""
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
这 2 个函数(touchesBegan 和 textFieldShouldReturn)在我的 FisrtViewController 和许多其他应用程序中完美运行。
我不知道为什么在这种情况下,如果我在任何地方单击键盘都会消失并且工作正常,但是当我按下返回键时,键盘不会消失。
我在 XCode 模拟器和我的 iPhone 7 和 iPad Air 2 上对其进行了测试,这 3 个 iDevice 上的问题仍然存在。
注意:我自愿删除了 viewDidLoad 和 didReceiveMemoryWarning,因为我没有这些函数的代码。
【问题讨论】:
-
在
textFieldShouldReturn中也使用self.view.endEditing(true)。 -
对不起,我尝试使用这行代码但不工作...
-
您是否已将文本字段的委托初始化为自我?我在您的代码中看不到这一点
-
override func viewDidLoad(){ super.viewDidLoad(); textField.delegate = self; } -
谢谢Xcoder123