当我按下RETURN键时,为什么键盘不会消失?

时间:2017-02-26 19:50:12

标签: ios swift swift3 keyboard

这是我的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 iDevices上的问题。

N.B:我自愿删除了viewDidLoad和didReceiveMemoryWarning,因为我没有这些函数的代码。

1 个答案:

答案 0 :(得分:2)

您必须添加以下代码行:

override func viewDidLoad(){
    super.viewDidLoad()
    self.txtNewItem.delegate = self
}

进入viewDidLoad()以使其正常工作!现在它将您的类分配给textField的委托。很高兴它有所帮助!