ChatGPT解决这个技术问题 Extra ChatGPT

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

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

[self.inputText resignFirstResponder];

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


l
lewis

确保“self”订阅 UITextFieldDelegate 并使用以下命令初始化 inputText:

self.inputText.delegate = self;

将以下方法添加到“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
}

F
Fangming

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
    }
}

M
Malfunction

虽然其他答案正常工作,但我更喜欢执行以下操作:

在 viewDidLoad() 中,添加

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

并定义函数

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

A
Ahmadreza

只需在 viewDidLoad 上的 textField 设置函数上添加一个目标,然后将其相关函数添加为选择器。

override func viewDidLoad() {
    super.viewDidLoad() 
    textField.addTarget(self, action: #selector(textFieldShouldReturn(sender:)), for: .primaryActionTriggered)
}

@objc func textFieldShouldReturn(sender: UITextField) {
    textField.resignFirstResponder()
}

此代码无法编译。括号中的一对不完整。
您的答案可以通过额外的支持信息得到改进。请edit添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。您可以找到有关如何写出好答案的更多信息in the help center
@zini 如果您添加遗漏的括号对您来说太难了吗?!我很抱歉!!
B
Blazej SLEBODA

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

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)