UITextField - Capture Return Button Event


101

Wie kann ich erkennen, wenn ein Benutzer während der Bearbeitung von UITextField die Tastaturtaste "Zurück" gedrückt hat? Ich muss dies tun, um die Tastatur zu schließen, wenn der Benutzer die "Zurück" -Taste gedrückt hat.

Vielen Dank.

Antworten:


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

Vergessen Sie nicht, den Delegaten in das Storyboard zu setzen ...

Geben Sie hier die Bildbeschreibung ein


47
Stellen Sie sicher, dass Ihr Ansichts-Controller als Delegat des Textfelds festgelegt ist.
Zekel

1
Danke dir. Für mich habe ich den Delegierten über eingestellt self.yourTextField.delegate = self;. Auch mehrere Textfelder funktionieren.
Haxpor

@Praxiteles Dies kann jetzt im Storyboard durchgeführt werden, ohne dass eine Delegierung erforderlich ist. Bitte überprüfen Sie die Antwort unten.
Blake Lockley

51

Eine Delegation ist nicht erforderlich. Hier ist ein Einzeiler:

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

Leider können Sie dies nicht direkt in Ihrem Storyboard tun (Sie können keine Aktionen mit dem Steuerelement verbinden, das sie in Storyboard ausgibt), aber Sie können dies über eine Zwischenaktion tun.


1
Ich möchte nur darauf hinweisen, dass das UIControlEventEditingDidEndOnExitEreignis nur gesendet wird, wenn die textFieldShouldReturn:Delegatmethode YES zurückgibt (ohne das Textfeld vorher zu verlassen).
Alex-I

Sie müssen nicht haben , um eine Delegation zu implementieren. Aber wenn Sie dies tun, müssen Sie möglicherweise YESfür diese Methode zurückkehren.
mxcl

9

SWIFT 3.0

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

Geben Sie in der Funktion enterPressed () alle Verhaltensweisen ein, nach denen Sie suchen

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

8

Sie können dies jetzt als Storyboard mit dem gesendeten Ereignis 'Did End On Exit' tun.

In Ihrer View Controller-Unterklasse:

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

In Ihrem Storyboard für das gewünschte Textfeld:

Geben Sie hier die Bildbeschreibung ein


Dies ist jetzt die richtige Antwort.
Psiloc

3

Schnelle Version mit UITextFieldDelegate:

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

2

Swift 5

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

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

Wenn Sie auf die Eingabetaste klicken, wird diese Delegatmethode aufgerufen. Sie können die Rückgabeschaltfläche von dieser Delegatmethode erfassen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.