Wie füge ich eine Aktion für die UITextField-Eingabetaste hinzu?


90

Ich habe eine Schaltfläche und ein Texttextfeld in meiner Ansicht. Wenn ich auf das Textfeld klicke, erscheint eine Tastatur und ich kann in das Textfeld schreiben. Außerdem kann ich die Tastatur schließen, indem ich auf die Schaltfläche klicke, indem ich Folgendes hinzufüge:

[self.inputText resignFirstResponder];

Jetzt möchte ich die Eingabetaste der Tastatur aktivieren. Wenn ich auf die Tastatur drücke, verschwindet die Tastatur und es passiert etwas. Wie kann ich das machen?


Antworten:


185

Stellen Sie sicher, dass "self" UITextFieldDelegateinputText abonniert und initialisiert mit:

self.inputText.delegate = self;

Fügen Sie "self" die folgende Methode hinzu:

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

Oder in Swift:

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

10

Mit Erweiterungsstil in Swift 3.0

Richten Sie zunächst einen Delegaten für Ihr Textfeld ein.

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

Passen UITextFieldDelegateSie dann die Erweiterung Ihres View Controllers an

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

4

Während die anderen Antworten richtig funktionieren, mache ich lieber Folgendes:

Fügen Sie in viewDidLoad () hinzu

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

und definieren Sie die Funktion

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

-1

Verwenden Sie den UIKit-Mechanismus für Zielaktionen für das von UITextField gesendete UIEvent "primaryActionTriggered", wenn Sie auf eine Schaltfläche "Fertig" tippen.

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
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.