ChatGPT解决这个技术问题 Extra ChatGPT

how to add an action on UITextField return key?

I have a button and text textfield in my view. when i click on the textfield a keyboard appears and i can write on the textfield and i also able to dismiss the keyboard by clicking on the button by adding:

[self.inputText resignFirstResponder];

Now I want to enable return key of keyboard. when i will press on the keyboard keyboard will disappear and something will happen. How can I do this?


l
lewis

Ensure "self" subscribes to UITextFieldDelegate and initialise inputText with:

self.inputText.delegate = self;

Add the following method to "self":

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

Or in Swift:

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

F
Fangming

With extension style in swift 3.0

First, set up delegate for your text field.

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

Then conform to UITextFieldDelegate in your view controller's extension

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

M
Malfunction

While the other answers work correctly, I prefer doing the following:

In viewDidLoad(), add

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

and define the function

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

A
Ahmadreza

Just add a target on textField setup function on viewDidLoad, then add its related function as selector.

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

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

This code doesn´t compile. The couples of parentheses is not complete.
Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
@zini Is it too hard for you if you add missed parentheses?! I got so sorry!!
B
Blazej SLEBODA

Use Target-Action UIKit mechanism for "primaryActionTriggered" UIEvent sent from UITextField when a keyboard done button is tapped.

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