如何在UITextField返回键上添加动作?


90

我的视图中有一个按钮和文本文本字段。当我单击文本字段时,将出现一个键盘,并且我可以在文本字段上书写,并且还可以通过添加以下内容单击按钮来关闭键盘:

[self.inputText resignFirstResponder];

现在我要启用键盘的返回键。当我按键盘时,键盘将消失,并且会发生某些事情。我怎样才能做到这一点?


Answers:


185

确保“自我”订阅UITextFieldDelegate并初始化inputText:

self.inputText.delegate = self;

将以下方法添加到“自身”:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField == self.inputText) {
        [textField resignFirstResponder];
        return NO;
    }
    return YES;
}

或在Swift中:

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

10

在Swift 3.0中具有扩展样式

首先,为您的文本字段设置委托。

override func viewDidLoad() {
    super.viewDidLoad()
    self.inputText.delegate = self
}

然后遵循UITextFieldDelegate您的视图控制器的扩展名

extension YourViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        if textField == inputText {
            textField.resignFirstResponder()
            return false
        }
        return true
    }
}

4

当其他答案正常工作时,我更喜欢执行以下操作:

在viewDidLoad()中,添加

self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)

并定义功能

@IBAction func onReturn() {
    self.textField.resignFirstResponder()
    // do whatever you want...
}

-1

当敲击键盘完成按钮时,对从UITextField发送的“ primaryActionTriggered” UIEvent使用Target-Action UIKit机制。

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.