resignFirstResponder和endEditing(甚至全局调用)没有隐藏键盘

时间:2015-09-30 15:51:21

标签: ios swift uiviewcontroller keyboard uitextfield

我将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
}

您可以从我评论过的尝试中看到我尝试了大量不同的修复程序。我知道在调试print语句后调用了textFieldShouldReturn。我无法弄清楚为什么键盘不会躲起来。

我尝试交换返回true和false语句。我尝试从故事板中设置委托。我尝试从故事板中删除textField,清理并重新添加。我尝试了对resignFirstResponderendEditing的所有顶级调用,以及对文本字段和视图调用这些函数。

2 个答案:

答案 0 :(得分:0)

  

要关闭键盘,请将resignFirstResponder消息发送到当前为第一个响应者的文本>字段。这样做会导致文本>字段对象结束当前编辑会话(委托>对象同意)并隐藏键盘。

yourTextField.resignFirstResponder()

答案 1 :(得分:0)

我尝试在textFiled上使用resignFirstResponder()并在我的视图上使用endEditing(true)但是我实现了这个小错误,实现了这个其他委托并返回false

    func textFieldShouldEndEditing(textField: UITextField) -> Bool {  //delegate method
    return true
}