我正在使用UITextfied,而点击textfied键盘出现,但当我按下返回键,键盘没有消失。我使用了以下代码:

func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
    return true;
}

方法resignfirstresponder没有进入函数。


当前回答

不需要委派

你可以从UITextField为“Primary action triggers”创建一个动作出口,并在传入的sender参数上辞职第一响应者:

@IBAction func done(_ sender: UITextField) {
    sender.resignFirstResponder()
}

超级简单。

(感谢斯科特·史密斯60秒的视频,让我知道了这一点:https://youtu.be/v6GrnVQy7iA)

其他回答

为了获得自动键盘撤销,我将以下代码放在自定义文本字段类的一个方法中:

textField.addTarget(nil, action:"firstResponderAction:", forControlEvents:.EditingDidEndOnExit)

替换你的出口名称为textField。

它的返回true部分只告诉文本字段是否允许返回。 你必须手动告诉文本字段解散键盘(或者它的第一个响应器是什么),这是通过resignFirstResponder()来完成的,如下所示:

// Called on 'Return' pressed. Return false to ignore.

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    textField.resignFirstResponder()
    return true
}

斯威夫特

使用UITextFieldDelegate的可选函数。

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    textField.endEditing(false)
}

False表示可以要求该字段辞职。真力辞职。

确保你的textField委托被设置为视图控制器,从你正在写你的textField相关的代码。

self.textField.delegate = self

斯威夫特3

将下面的代码添加到你的VC中

//hide keyboard when user tapps on return key on the keyboard
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    self.view.endEditing(true);
    return false;
}

对我有用