First Responder ist das UIResponder-Objekt in iOS, das als erstes Berührungsereignisse, Tastendrücke, Schüttelgesten und Menübefehle empfängt. Zu jedem Zeitpunkt kann nur ein Objekt in der Anwendung first responder sein. Die Zuweisung erfolgt automatisch (wenn ein UITextField den Fokus erhält) oder programmatisch über die Methode becomeFirstResponder. Laut der Apple Developer Documentation (2026) kann ein Objekt nur dann first responder werden, wenn seine Methode canBecomeFirstResponder true zurückgibt, was diesen Mechanismus explizit und kontrollierbar macht.
Wichtige Punkte
First Responder ist das UIResponder-Objekt, das aktuell Eingabeereignisse in einer iOS-Anwendung empfängt. Das System leitet alle Berührungsereignisse, Tastendrücke, Bewegungsereignisse (Gerät schütteln) und Aktionsnachrichten (z. B. Aufrufen eines Kontextmenüs) an dieses Objekt weiter.
Das First-Responder-Konzept ist das erste Glied in der Responder Chain. Wenn der first responder ein empfangenes Ereignis nicht behandelt, wird es automatisch an das nächste Objekt in der Kette weitergegeben. Dadurch wird sichergestellt, dass ein Ereignis nicht verloren geht, sondern nacheinander allen potenziellen Behandlern in der Hierarchie angeboten wird.
Laut Apple ist der First-Responder-Status eng mit UIResponder und seinen Methoden canBecomeFirstResponder und becomeFirstResponder verbunden. Standardmäßig gibt UIView nur für bestimmte Unterklassen true zurück — UITextField, UITextView, UISearchBar. Andere Views, einschließlich einfacher UIView, geben false zurück, was eine versehentliche Zuweisung verhindert.
Die Zuweisung des first responders kann auf zwei Arten erfolgen: automatisch, wenn der Benutzer ein UITextField berührt (das System ruft intern becomeFirstResponder auf), oder programmatisch, wenn der Entwickler explizit die Methode becomeFirstResponder auf einem beliebigen UIResponder-Objekt aufruft.
Vor der Zuweisung überprüft iOS canBecomeFirstResponder. Wenn die Methode false zurückgibt, wird der becomeFirstResponder-Aufruf ignoriert und das Objekt wird nicht first responder. Dies ist ein Schutzmechanismus, der die Zuweisung von Objekten verhindert, die nicht bereit sind, Ereignisse zu behandeln — z. B. ausgeblendete oder deaktivierte Oberflächenelemente.
class CustomTextField: UITextField {
override var canBecomeFirstResponder: Bool {
return super.canBecomeFirstResponder
}
}
// Programmatische Zuweisung
textField.becomeFirstResponder()
// Prüfen, ob first responder
if textField.isFirstResponder {
print("TextField ist jetzt first responder")
}
Wenn ein neuer first responder zugewiesen wird, ruft iOS automatisch resignFirstResponder beim vorherigen auf. Dadurch wird garantiert, dass im System immer nur ein Objekt mit First-Responder-Status existiert. Wenn das neue Objekt nicht first responder werden kann (canBecomeFirstResponder = false), behält das alte seinen Status.
Die iOS-Tastatur erscheint auf dem Bildschirm genau aufgrund des First-Responder-Mechanismus. Wenn ein UITextField oder UITextView first responder wird, zeigt das System automatisch die Tastatur an, die mit dem aktuellen keyboardType dieses Feldes verbunden ist. Wenn der first responder resigniert, wird die Tastatur ausgeblendet.
Dieses Verhalten ist ein wichtiger UX-Mechanismus in iOS: Der Benutzer berührt ein Eingabefeld — die Tastatur erscheint; drückt die Rücktaste oder berührt ein anderes Feld — die Tastatur wechselt oder wird ausgeblendet. Der Entwickler kann dies über UIResponder-Methoden sowie über inputView und inputAccessoryView steuern, um die Standardtastatur durch eine benutzerdefinierte zu ersetzen.
Input Accessory View ist ein zusätzliches Bedienfeld über der Tastatur, das ebenfalls an den first responder gebunden ist. Zum Beispiel ein Bedienfeld mit den Schaltflächen Weiter, Zurück, Fertig zur Navigation zwischen Eingabefeldern. Es wird zusammen mit der Tastatur ein- und ausgeblendet und synchronisiert sich mit dem First-Responder-Status.
| Ereignis | First-Responder-Status | Tastatur |
|---|---|---|
| UITextField berühren | Wird first responder | Erscheint |
| Rücktaste drücken | Bleibt oder resigniert | Bleibt oder wird ausgeblendet |
| Anderes Feld berühren | Wechselt zum neuen Feld | Wechselt |
| resignFirstResponder aufrufen | Entfernt | Wird ausgeblendet |
| App in den Hintergrund | Resigniert automatisch | Wird ausgeblendet |
ResignFirstResponder ist eine UIResponder-Methode, die den First-Responder-Status von einem Objekt entfernt. Nach dem Aufruf hört das Objekt auf, Eingabeereignisse zu empfangen, und die Tastatur (falls sie aktiv war) wird ausgeblendet. Die Methode gibt einen Bool zurück — true, wenn das Resign erfolgreich war.
Entwickler rufen resignFirstResponder oft als Reaktion auf das Drücken der Fertig-Schaltfläche, das Berühren eines leeren Bereichs des Bildschirms (view.endEditing) oder beim Verlassen des Bildschirms auf. view.endEditing(true) ist eine bequeme Möglichkeit, für alle untergeordneten Textfelder gleichzeitig zu resignieren: Es durchläuft die gesamte Ansichtshierarchie und ruft resignFirstResponder beim aktuellen first responder auf.
// Resign bei Done-Taste
@objc func doneButtonTapped() {
textField.resignFirstResponder()
}
// Resign bei Berührung leerer Fläche
override func touchesBegan(
_ touches: Set<UITouch>,
with event: UIEvent?
) {
view.endEditing(true)
}
// Resign für alle Formularfelder
func validateAndSubmit() {
view.endEditing(true)
// Formular-Übermittlungslogik
}
Es gibt Situationen, in denen resignFirstResponder false zurückgeben kann. Dies geschieht, wenn das Objekt die Methode überschrieben und das Entfernen des Status explizit verboten hat. Beispielsweise kann ein Textfeld in der Validierung vorübergehend das Resign blockieren, um Datenverlust zu verhindern. In solchen Fällen warten Sie, bis die Validierung abgeschlossen ist, und resignieren Sie dann zwangsweise.
UIResponder stellt die Eigenschaft isFirstResponder (schreibgeschützt) bereit, die true zurückgibt, wenn das angegebene Objekt aktuell der first responder ist. Dies ist nützlich für bedingte Logik — z. B. um eine Aktion zu vermeiden, wenn ein Textfeld fokussiert ist und der Benutzer Daten eingibt.
iOS bietet keine integrierte API zum Abrufen des aktuellen first responders auf Anwendungsebene. Entwickler erreichen dies, indem sie die Ansichtshierarchie mit der UIResponder-Methode durchlaufen. Apple empfiehlt eine schwache Referenz (weak reference) auf den first responder, die über KVO oder Delegate aktualisiert werden kann.
// Erweiterung zum Finden von first responder
extension UIView {
var firstResponder: UIResponder? {
guard isFirstResponder else {
return subviews.compactMap { $0.firstResponder }.first
}
return self
}
}
// Verwendung
if let current = view.firstResponder {
print("Current first responder: \(current)")
}
Zur Überwachung von Änderungen des first responders können Sie UIResponder.keyboardWillShowNotification und UIResponder.keyboardWillHideNotification abonnieren — sie zeigen indirekt an, dass ein Textobjekt first responder geworden oder nicht mehr first responder ist. Es gibt jedoch kein direktes Abonnement für isFirstResponder-Änderungen; stattdessen werden KVO oder benutzerdefinierte Delegate verwendet.
Benutzerdefinierte Views können first responder werden, wenn sie canBecomeFirstResponder überschreiben und true zurückgeben. Dies ist für Komponenten erforderlich, die Tastatur- oder physikalische Tastenereignisse empfangen müssen — z. B. benutzerdefinierte Game-Controller oder Code-Editoren auf Basis von UITextView.
Bei der Erstellung eines benutzerdefinierten first responders ist es wichtig, die Barrierefreiheit zu beachten: VoiceOver und Switch Control verlassen sich für die Navigation auf die korrekte Zuweisung des first responders. Wenn eine benutzerdefinierte Ansicht first responder wird, muss sie das UIAccessibility-Protokoll korrekt implementieren und assistiven Technologien ihren Status melden.
Für benutzerdefinierte Eingabe (z. B. einen Barcodescanner oder ein digitales Tastenfeld) überschreiben Sie die Eigenschaft inputView — geben Sie eine benutzerdefinierte UIView zurück, die anstelle der Standardtastatur angezeigt wird, wenn diese Ansicht first responder ist. Ebenso fügt inputAccessoryView ein Bedienfeld über der Tastatur hinzu.
Häufig gestellte Fragen
First Responder ist das UIResponder-Objekt, das aktuell Eingabeereignisse (Berührung, Tasten, Beschleunigungssensor) empfängt. Es wird über becomeFirstResponder zugewiesen und muss true von canBecomeFirstResponder zurückgeben. Nur ein Objekt kann in einer Anwendung first responder sein.
Rufen Sie textField.becomeFirstResponder() programmatisch auf, z. B. in viewDidAppear. Stellen Sie sicher, dass textField nicht ausgeblendet ist, userInteractionEnabled = true und isEnabled = true. Wenn sich das Feld in einer UITableView oder UICollectionView befindet, stellen Sie sicher, dass die Zelle auf dem Bildschirm sichtbar ist.
Fügen Sie der Hauptansicht einen UITapGestureRecognizer hinzu und rufen Sie in dessen Handler view.endEditing(true) auf. Dies findet automatisch den aktuellen first responder und ruft resignFirstResponder auf. Alternativ überschreiben Sie touchesBegan in UIViewController mit einem Aufruf von endEditing.
becomeFirstResponder gibt false zurück, wenn canBecomeFirstResponder false zurückgibt, die Ansicht ausgeblendet ist, nicht in der Fensterhierarchie ist oder userInteractionEnabled = false. Überprüfen Sie auch, ob die Ansicht zum Fenster hinzugefügt wurde — eine nicht auf dem Bildschirm befindliche Ansicht reagiert nicht auf becomeFirstResponder.
iOS bietet keine globale API dafür. Verwenden Sie eine rekursive Durchquerung der Ansichtshierarchie über eine UIView-Erweiterung, die isFirstResponder bei jeder Unteransicht überprüft. Eine Alternative ist das Speichern einer schwachen Referenz auf den letzten first responder im AppDelegate und deren Aktualisierung über UITextField-Delegaten.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch