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?

razibdeb
quelle
1
Mögliches Duplikat: stackoverflow.com/questions/4761648/…
wquist

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
}
Ander
quelle
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
    }
}
Fangming
quelle
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...
}
Fehlfunktion
quelle
-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)
Adobels
quelle