Ios 为什么不是';当我按回车键时,我的键盘不会消失吗?

Ios 为什么不是';当我按回车键时,我的键盘不会消失吗?,ios,swift,swift3,keyboard,Ios,Swift,Swift3,Keyboard,这是我的第二个ViewController类: class SecondViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var txtNewItem: UITextField! @IBOutlet weak var lblResult: UILabel! @IBAction func btnAddNewItem(_ sender: Any) { let itemsObject = UserDe

这是我的第二个ViewController类:

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
    }
}
class SecondViewController:UIViewController、UIExtFieldDelegate{
@IBOutlet弱变量txtNewItem:UITextField!
@IBOutlet弱var lblResult:UILabel!
@iAction func btnAddNewItem(u发送方:任意){
让itemsObject=UserDefaults.standard.object(forKey:“items”)
变量项:[字符串]
如果让tmpItem=itemsObject为?[String]{
如果txtNewItem.text==“”{
//如果空txtNewItem为“”,则发出警报消息
}否则{
项目=tmpItem
items.append(txtNewItem.text!)
UserDefaults.standard.set(items,forKey:“items”)
}
}否则{
items=[txtNewItem.text!]
UserDefaults.standard.set(items,forKey:“items”)
}
txtNewItem.text=“”
}
覆盖func TouchesBegind(Touchs:Set,带有事件:UIEvent?){
self.view.endEditing(true)
}
func textField应该返回(textField:UITextField)->Bool{
textField.resignFirstResponder()辞职
返回真值
}
}
这两个功能(touchesBegind和textFieldShouldReturn)在我的FirstViewController和许多其他应用程序中都能完美运行

我不知道为什么在这种情况下,如果我在任何地方单击键盘都会消失,并且工作正常,但当我按下返回键时,键盘不会消失

我在XCode模拟器上测试了它,在我的iPhone7和iPadAir 2上也测试了它。这3款iDevices上的问题仍然存在


注意:我自愿删除了viewDidLoad和didReceiveMemoryWarning,因为这些函数中没有代码。

您必须添加以下代码行:

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

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

您必须添加以下代码行:

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

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

textfield中使用
self.view.endEditing(true)
也应返回
。抱歉,我尝试使用这行代码,但不起作用…您是否已将textfield的委托初始化为self??我在你的代码中看不到这一点。
override func viewDidLoad(){super.viewDidLoad();textField.delegate=self;}
谢谢你,xcoder123使用
self.view.endEditing(true)
textField中也应该返回
。对不起,我尝试了这一行代码,但不起作用……你初始化了textField的委托给self了吗??在您的代码中,我看不到这一点。
override func viewDidLoad(){super.viewDidLoad();textField.delegate=self;}
谢谢您的Xcoder123更好,因为OP正在使用outlets,请在Interface Builder中设置文本字段的委托。不需要代码。它取决于您所使用的开发人员的类型。像我这样的一些人喜欢在代码中同时包含委托和委托的方法,而其他人可能更喜欢拖放样式。代码的优点是可以处理通过编程和代码创建的文本字段,这就是我选择它的原因。我用代码做所有事情,所以我能理解你所说的。但是,如果较新的开发人员正在使用故事板和插座等,那么他们似乎也可以在故事板/xib中连接代理。但我同意,最终要由开发人员选择适合他们的产品。我真的只是想向OP指出这个选项,这样他们就不会认为唯一的选项是通过代码设置委托。更好的是,既然OP使用outlets,那么在Interface Builder中设置文本字段的委托。不需要代码。它取决于您所使用的开发人员的类型。像我这样的一些人喜欢在代码中同时包含委托和委托的方法,而其他人可能更喜欢拖放样式。代码的优点是可以处理通过编程和代码创建的文本字段,这就是我选择它的原因。我用代码做所有事情,所以我能理解你所说的。但是,如果较新的开发人员正在使用故事板和插座等,那么他们似乎也可以在故事板/xib中连接代理。但我同意,最终要由开发人员选择适合他们的产品。我真的只是想向OP指出这个选项,这样他们就不会认为唯一的选项是通过代码设置委托。