UITextField - 捕获返回按钮事件

时间:2009-06-10 16:52:43

标签: ios iphone cocoa-touch uitextfield backspace

如何在编辑UITextField时检测用户何时按下“返回”键盘按钮? 我需要这样做才能在用户按下“返回”按钮时解除键盘。

感谢。

7 个答案:

答案 0 :(得分:207)

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

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

enter image description here

答案 1 :(得分:45)

不需要委托,这是一个单行程序:

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

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

答案 2 :(得分:5)

SWIFT 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()
}

答案 3 :(得分:4)

现在,您可以使用已发送的事件“在结束时退出”来完成故事板。

在视图控制器子类中:

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

在所需文本字段的故事板中:

the docs

答案 4 :(得分:4)

快捷键5

textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)

答案 5 :(得分:1)

使用UITextFieldDelegate的快速版本:

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

答案 6 :(得分:-1)

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

单击enter按钮后,将调用此委托方法。您可以从此委托方法捕获返回按钮。