106

如何在编辑 UITextField 时检测用户何时按下“返回”键盘按钮?我需要这样做以便在用户按下“返回”按钮时关闭键盘。

谢谢。

4

7 回答 7

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

不要忘记在故事板中设置委托...

在此处输入图像描述

于 2009-06-10T17:05:29.003 回答
53

委托不是必需的,这里有一个单行:

- (void)viewDidLoad {
    [textField addTarget:textField
                  action:@selector(resignFirstResponder)
        forControlEvents:UIControlEventEditingDidEndOnExit];
}

遗憾的是,您无法在 Storyboard 中直接执行此操作(您无法将操作连接到在 Storyboard 中发出它们的控件),但您可以通过中间操作来执行此操作。

于 2014-01-08T21:58:13.630 回答
11

斯威夫特 3.0

override open func viewDidLoad() {
    super.viewDidLoad()    
    textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}

在 enterPressed() 函数中放置你所追求的所有行为

func enterPressed(){
    //do something with typed text if needed
    textField.resignFirstResponder()
}
于 2017-08-21T14:30:38.960 回答
11

您现在可以使用发送的事件“退出时结束”来执行此操作。

在您的视图控制器子类中:

 @IBAction func textFieldDidEndOnExit(textField: UITextField) {
    textField.resignFirstResponder()
}

在所需文本字段的情节提要中:

在此处输入图像描述

于 2018-02-27T23:18:12.443 回答
6

斯威夫特 5

textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)
于 2020-02-23T19:39:18.183 回答
5

使用 UITextFieldDelegate 的 Swift 版本:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    resignFirstResponder()
    return false
}
于 2018-09-21T21:29:11.027 回答
-1
- (BOOL)textFieldShouldReturn:(UITextField *)txtField 
{
[txtField resignFirstResponder];
return NO;
}

单击输入按钮时,将调用此委托方法。您可以从此委托方法中捕获返回按钮。

于 2016-04-30T10:07:05.010 回答