ChatGPT解决这个技术问题 Extra ChatGPT

UITextField - capture return button event

How can I detect when a user pressed "return" keyboard button while editing UITextField? I need to do this in order to dismiss keyboard when user pressed the "return" button.

Thanks.


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

Don't forget to set the delegate in storyboard...

https://i.stack.imgur.com/ubgD6.png


Make sure your view controller is set as the textfield's delegate.
Thank you. For me I set the delegate via self.yourTextField.delegate = self;. Even multiple of text fields also work.
@Praxiteles This can now be done in storyboard without requiring delegation please check answer below.
m
mxcl

Delegation is not required, here's a one-liner:

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

Sadly you can't directly do this in your Storyboard (you can't connect actions to the control that emits them in Storyboard), but you could do it via an intermediary action.


I just want to point out that UIControlEventEditingDidEndOnExit event gets sent only if textFieldShouldReturn: delegate method returns YES (without prior resigning the text field).
You don't have to implement delegation. But maybe if you do you have to return YES for this method.
d
drpawelo

SWIFT 3.0

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

in enterPressed() function put all behaviours you're after

func enterPressed(){
    //do something with typed text if needed
    textField.resignFirstResponder()
}

B
Blake Lockley

You can now do this is storyboard using the sent event 'Did End On Exit'.

In your view controller subclass:

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

In your storyboard for the desired textfield:

https://i.stack.imgur.com/ZJbht.png


T
Ted

Swift 5

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

L
Leo Dabus

Swift version using UITextFieldDelegate :

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

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

When enter button is clicked then this delegate method is called.you can capture return button from this delegate method.