Swift ';辞职FirstResponder()';返回true,文本字段失去焦点,但键盘不会关闭

Swift ';辞职FirstResponder()';返回true,文本字段失去焦点,但键盘不会关闭,swift,keyboard,uitextfield,uiresponder,resignfirstresponder,Swift,Keyboard,Uitextfield,Uiresponder,Resignfirstresponder,我有一个故事板场景,只有两个UITextField。第一个未被触及,刚从对象库中取出。第二个代理插座连接到ViewController的代码 (很抱歉,我必须以这种方式发布图像,因为StackOverflow不允许我这样做。) 代码非常简单。这就是全部 class ViewController: UIViewController, UITextFieldDelegate { func textFieldDidBeginEditing(textField: UITextFiel

我有一个故事板场景,只有两个
UITextField
。第一个未被触及,刚从对象库中取出。第二个代理插座连接到
ViewController
的代码

(很抱歉,我必须以这种方式发布图像,因为StackOverflow不允许我这样做。)

代码非常简单。这就是全部

class ViewController: UIViewController, UITextFieldDelegate {    
    func textFieldDidBeginEditing(textField: UITextField) {
        textField.resignFirstResponder()
    }
}
它所做的唯一一件事就是在键盘即将出现时关闭键盘

第一个正常显示键盘。第二个没有显示键盘,因为它会立即被取消

这一切都可以自己完美地工作,直到我单击第一个文本字段以打开键盘,然后使用屏幕上的键盘,我单击第二个文本字段。 接下来发生的事情是,第二个文本字段失去焦点,但键盘仍在屏幕上

使用
print(:)
,我已经验证了,当我在第二个文本字段上调用
resignFirstResponder
时,它是第一个响应者,该调用的返回值是
true
,调用后它不再是第一个响应者

但是键盘还在那里

我尝试在代理的
文本字段shouldReturn(:)
方法中添加
print(:)
,并在文本字段退出后单击return键。调试控制台中没有打印任何内容

我尝试了
disablesAutomaticKeyboardDismissal()
,返回的
false
true
都不会产生任何差异

编辑 我想要的很简单: 我希望第一个文本字段执行默认的操作,第二个文本字段在点击后立即关闭键盘(从用户的角度来看,基本上是指不显示)

我知道
textfield应该开始编辑(:)
,但由于各种原因,我不能使用它,我只需要在键盘被激活后关闭它

重新编辑 我也尝试了
view.endEditing(true)
。事实上,我在场景中的每个视图上都尝试了
.endEditing(true)
。不起作用。

试着这样做:

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
    view.endEditing(true)
    return true
}

func textFieldDidBeginEditing(textField: UITextField) {
    textField.resignFirstResponder()
    //make here whatever you like

}

对不起,我没有说清楚我的意图。我对第一个文本字段的行为不感兴趣。我想关闭第二个文本字段的键盘。我已经试过了。它似乎不起作用。请查看我对问题的编辑。它有效!用
endEditing(true)
调用替换for-in循环同样有效。你能告诉我为什么它能工作吗?我把它改为view.Enditing(true)-更清楚:)它能工作是因为textField成为textfielddbeginediting的第一响应者。