当我按下RETURN键时,为什么我的键盘不会消失?
这是我SecondViewController类:当我按下RETURN键时,为什么我的键盘不会消失?
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个iDevices上继续发生。
N.B:我自愿删除了viewDidLoad和didReceiveMemoryWarning,因为我没有代码进入这些函数。为了
override func viewDidLoad(){
super.viewDidLoad()
self.txtNewItem.delegate = self
}
进入viewDidLoad()
这个工作:
您必须添加几行代码!现在它将您的类分配给textField的委托。很高兴帮助!
更好的是,由于OP使用插座,所以在Interface Builder中设置文本字段的委托。无需代码。 – rmaddy
它依赖于你的开发类型。有些人和我一样,喜欢在代码中使用该代表的代表和方法,而另一些人可能更喜欢拖放样式。代码具有处理以编程方式和通过代码创建的文本字段的优势,这就是我选择它的原因。 –
但非常有针对性的@rmaddy –
在'textFieldShouldReturn'中也使用'self.view.endEditing(true)'。 –
对不起,我尝试用这行代码,并没有工作... – LiTHiUM2525
你是否已经初始化了textfield的委托给自己?我没有看到你的代码 –