在 UITextField 中按回车键时如何隐藏键盘?

单击文本字段将显示键盘。 当用户按下返回键时,我如何隐藏它?

145831 次浏览

设置 UITextField的委托,和 over ride,textFieldShouldReturn方法,在该方法中只需写下两行:

[textField resignFirstResponder];
return YES;

就是这样。在编写代码之前,不要忘记设置 UITextField的委托,并从属性窗口将 Return 键类型设置为“ Done”。(command + shift + I).

首先为 UITextField 创建文件委托

@interface MYLoginViewController () <UITextFieldDelegate>


@end

然后将此方法添加到代码中。

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}

还要加上 self.textField.delegate = self;

viewDidLoad中声明:

[yourTextField setDelegate:self];

然后,包括委托方法的重写:

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}

试试这个,

[textField setDelegate: self];

然后,在 textField 委托方法中

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}

以迅雷不及掩耳之势:
首先在你的 ViewController实现这个 UITextFieldDelegate 为了..。

class MyViewController: UIViewController, UITextFieldDelegate {
....
}

现在向 TextField添加一个委托,在这个 TextField中,如果在下面的 viewDidLoad方法中或者在初始化返回时,想要关闭键盘。 为了..。

override func viewDidLoad() {


super.viewDidLoad()
myTextField.delegate = self
}

现在添加这个方法。

func textFieldShouldReturn(textField: UITextField) -> Bool {


textField.resignFirstResponder()
return true
}

斯威夫特试试这个,

步骤1: 将委托设置为自己到 textField

textField.delegate = self

步骤2: 在类声明下面添加这个 UITextFieldCommittee,

extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
[textField resignFirstResponder];

用这个

您可以连接“主要行动触发”(右键单击 UITextField)与 IBAction,您可以辞职第一响应者(没有委托)。例子 (斯威夫特4) :

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

Swift 4

设置视图控制器中 UITextField的委托,field.delegate = self,然后:

extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// don't force `endEditing` if you want to be asked for resigning
// also return real flow value, not strict, like: true / false
return textField.endEditing(false)
}
}

好吧,我觉得对于一个新手来说,事情可能有点令人困惑。我认为正确的答案是综合以上所有因素,至少在 Swift4中是这样的。

要么创建一个扩展,要么使用 ViewController,您希望在其中使用这个扩展,但是要确保实现了 UITextFieldCommittee。出于可重用性的考虑,我发现使用扩展更容易:

extension UIViewController : UITextFieldDelegate {
...
}

但另一种选择也同样有效:

class MyViewController: UIViewController {
...
}

添加 textFieldShouldReturn 方法(取决于以前的选项,可以在扩展中,也可以在 ViewController 中)

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

在 viewDidLoad 方法中,将 textfield 的委托设置为 self

@IBOutlet weak var myTextField: UITextField!
...


override func viewDidLoad() {
..
myTextField.delegte = self;
..
}

这应该是所有。现在,当你按 returntextFieldShouldReturn应该被调用。

定义这个类,然后将文本字段设置为使用这个类,当自动按下返回键时,整个隐藏键盘将自动运行。

class TextFieldWithReturn: UITextField, UITextFieldDelegate
{


required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.delegate = self
}


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


}

然后你需要在故事板中做的就是设置使用类的字段:

enter image description here

如果要为特定键盘隐藏键盘,请使用 [self.view resignFirstResponder]; 如果要在视图中隐藏任何键盘,请使用 [self.view endEditing:true];