Keyboard Avoidance ist eine Technik zur Anpassung der iOS-App-Oberfläche beim Erscheinen der Systemtastatur, die Textfelder und andere interaktive Elemente überdecken kann. Ohne Implementierung dieses Mechanismus sieht der Benutzer physisch nicht, was er eingibt, was zu Fehlern und einer schlechteren Benutzererfahrung führt. Laut Apple Developer Documentation (2026) wird ab iOS 15 empfohlen, UIScrollView in Kombination mit UIScrollView.keyboardLayoutGuide für die automatische Verwaltung der Inhaltsverschiebung zu verwenden.
Wichtige Erkenntnisse
Keyboard Avoidance ist eine Reihe von Techniken, die die Sichtbarkeit des aktiven Eingabefelds beim Erscheinen der Systemtastatur auf iOS gewährleisten. Das grundlegende Problem: Die Tastatur belegt bis zu 50 % des Bildschirms und bedeckt die untere Hälfte der Oberfläche, einschließlich Textfelder, Senden-Schaltflächen und anderer Elemente.
Es gibt drei Hauptansätze zur Implementierung: manuelle Verwaltung über Keyboard Notifications (klassischer Ansatz, funktioniert seit iOS 3.0), Verwendung von UIScrollView mit automatischem Scrollen (von Apple empfohlen) und Keyboard Layout Guide (moderner Ansatz mit iOS 15+). Die Wahl hängt von der mindestens unterstützten iOS-Version und der Komplexität der Oberfläche ab.
Laut Apple ist das Fehlen von Keyboard Avoidance einer der häufigsten Gründe für App-Ablehnungen bei der Überprüfung, wenn Textfelder vollständig von der Tastatur verdeckt werden. Die App Store Guidelines verlangen ausdrücklich, dass alle interaktiven Elemente während der aktiven Eingabe zugänglich bleiben.
iOS kann nicht automatisch bestimmen, welches Element sichtbar bleiben soll, weil es die Semantik der Oberfläche nicht kennt. In einem einfachen Formular mit einem Textfeld reicht es aus, den gesamten Bildschirm nach oben zu verschieben. In einer komplexen Oberfläche mit benutzerdefinierten Bereichen, schwebenden Schaltflächen und mehreren Abschnitten ist eine unterschiedliche Verhaltenslogik erforderlich.
Darüber hinaus verschieben einige Apps den Inhalt absichtlich nicht — zum Beispiel Tastaturrechner oder Editoren, bei denen die Tastatur Teil des Arbeitsbereichs ist. iOS überlässt die Entscheidung dem Entwickler und bietet flexible APIs für jedes Szenario.
UIKeyboardWillShowNotification ist die wichtigste Benachrichtigung, die iOS vor dem Erscheinen der Tastatur sendet. Sie enthält ein CGRect mit der endgültigen Position der Tastatur im Wörterbuch UIResponder.keyboardFrameEndUserInfoKey sowie die Animationsdauer in UIResponder.keyboardAnimationDurationUserInfoKey.
Der Benachrichtigungshandler sollte die Überlappung zwischen dem aktiven Textfeld und der Tastatur berechnen und dann den unteren Abstand (contentInset oder frame) des Containers ändern. Befindet sich das Feld unterhalb der Oberkante der Tastatur, wird der Inhalt um den Überlappungsbetrag nach oben verschoben. Beim Ausblenden der Tastatur kehrt der Abstand zu seinem ursprünglichen Wert zurück.
@objc func keyboardWillShow(_ notification: Notification) {
guard let keyboardFrame = notification
.userInfo?[UIResponder.keyboardFrameEndUserInfoKey]
as? CGRect else { return }
let keyboardHeight = keyboardFrame.height
scrollView.contentInset.bottom = keyboardHeight
scrollView.verticalScrollIndicatorInsets.bottom = keyboardHeight
}
Bei Verwendung von Benachrichtigungen ist es wichtig, die Animation synchron mit der Systemtastatur zu behandeln. iOS liefert die Animationskurve (UIResponder.keyboardAnimationCurveUserInfoKey) und die Dauer. Verwenden Sie UIView.animate mit diesen Parametern, damit sich der Inhalt gleichzeitig mit dem Erscheinen der Tastatur nahtlos verschiebt.
UIScrollView.keyboardLayoutGuide ist eine moderne API für Keyboard Avoidance, die in iOS 15 eingeführt wurde. Sie verfolgt automatisch die Position der Tastatur und aktualisiert die Auto-Layout-Einschränkungen, die den unteren Teil der Oberfläche mit der Oberkante der Tastatur verbinden.
Zur Verwendung aktivieren Sie einfach den Layout-Guide auf einem UIScrollView oder UIStackView und befestigen die untere Inhaltseinschränkung daran. Keine manuelle Arbeit mit Benachrichtigungen, Höhenberechnung oder Animation erforderlich — das System erledigt alles automatisch und synchronisiert die Animation mit dem Ein- und Ausblenden der Tastatur.
// Keyboard Layout Guide aktivieren (iOS 15+)
scrollView.keyboardLayoutGuide.followsUndockedKeyboard = true
// Untere Einschränkung an Tastaturoberkante festlegen
contentView.bottomAnchor.constraint(
equalTo: scrollView.keyboardLayoutGuide.topAnchor
).isActive = true
followsUndockedKeyboard ist eine Eigenschaft, die bestimmt, ob der Guide auf eine Tastatur reagieren soll, die von der Unterkante gelöst werden kann (auf dem iPad). Setzen Sie sie nur auf true, wenn die Oberfläche korrekt mit einer schwebenden Tastatur funktioniert. Beim iPhone wird diese Eigenschaft ignoriert — die Tastatur ist immer an der Unterkante befestigt.
UIScrollView ist ein Container, den Apple als Grundlage für Keyboard Avoidance empfiehlt. Wenn die Tastatur erscheint, erhöht die Scroll-View ihr contentInset.bottom, sodass der Inhalt nach oben gescrollt und das aktive Feld sichtbar gemacht werden kann.
Die Schlüsselmethode ist scrollRectToVisible, die die Scroll-View programmatisch so scrollt, dass das angegebene Rechteck (das aktive Textfeld) in den sichtbaren Bereich gelangt. Die Kombination von contentInset-Änderung mit einem scrollRectToVisible-Aufruf stellt sicher, dass das Feld nicht nur freigelegt, sondern auch im oberen Teil des sichtbaren Bereichs positioniert ist.
func adjustScrollForKeyboard(
keyboardHeight: CGFloat,
activeField: UIView
) {
scrollView.contentInset.bottom = keyboardHeight
scrollView.verticalScrollIndicatorInsets.bottom = keyboardHeight
var visibleRect = view.frame
visibleRect.size.height -= keyboardHeight
if activeField.frame.origin.y > visibleRect.maxY {
scrollView.scrollRectToVisible(
activeField.frame, animated: true
)
}
}
Für UIViewController mit UITableView empfiehlt Apple die Verwendung von UITableViewController, der den contentInset beim Erscheinen der Tastatur automatisch anpasst. Wenn Sie UIViewController mit einer hinzugefügten Tabelle verwenden, müssen Sie Keyboard Avoidance manuell implementieren — UITableViewController bietet dieses Verhalten nicht für benutzerdefinierte Controller.
Auto Layout ermöglicht die Implementierung von Keyboard Avoidance ohne Programmierung von Animationen — ändern Sie einfach die Aktivität (isActive) einer bestimmten Einschränkung oder aktualisieren Sie ihre Konstante als Reaktion auf eine Tastaturbenachrichtigung.
Ein typisches Schema: Erstellen Sie eine IBOutlet NSLayoutConstraint für den unteren Abstand der Scroll-View oder des Inhalts, setzen Sie im keyboardWillShow-Handler constraint.constant = keyboardHeight und setzen Sie es in keyboardWillHide auf 0 zurück. Aktualisieren Sie das Layout über layoutIfNeeded innerhalb eines animate-Blocks für einen sanften Übergang.
| Ansatz | iOS-Version | Komplexität | Empfehlung |
|---|---|---|---|
| Keyboard Notifications | iOS 3.0+ | Mittel | Zur Unterstützung alter Versionen |
| UIScrollView + contentInset | iOS 2.0+ | Niedrig | Universeller Ansatz, Apple empfiehlt |
| Keyboard Layout Guide | iOS 15+ | Minimal | Moderner Ansatz (iOS 15+) |
| IQKeyboardManager | iOS 8.0+ | Null | Schnelle Lösung, beliebte Bibliothek |
Bei Verwendung von UIStackView funktioniert das Ändern der unteren Abstandseinschränkungen ebenfalls: Die Stack-View verteilt die untergeordneten Elemente automatisch neu. Wenn sich die Stack-View jedoch innerhalb eines UIScrollView befindet, ist es vorzuziehen, den contentInset der Scroll-View selbst zu verwalten, anstatt die Einschränkungen darin.
IQKeyboardManager ist die beliebteste Bibliothek (über 16.000 Sterne auf GitHub), die automatisches Keyboard Avoidance ohne eine einzige Codezeile im Controller implementiert. Sie verwendet Method Swizzling, um Textfelder zu verfolgen und den Inhalt beim Erscheinen der Tastatur automatisch anzuheben.
Die Bibliothek bietet flexible Einstellungen: Sie können den Abstand zwischen Feld und Tastatur festlegen, die Funktion für bestimmte Controller aktivieren/deaktivieren und das Verhalten für UITextView und benutzerdefinierte Eingabeansichten konfigurieren. Allerdings kann Method Swizzling mit anderen Bibliotheken kollidieren, und Apple empfiehlt diesen Ansatz aufgrund unvorhersehbarer Nebeneffekte nicht für Produktionscode.
Alternativen umfassen TPKeyboardAvoiding (eine leichte Bibliothek, ~2.000 Sterne) und KeyboardManager aus der Community. Für moderne Projekte empfiehlt Apple die integrierten iOS 15+-Tools, und für Projekte mit einer niedrigeren Mindestversion — UIScrollView mit contentInset, die zuverlässigste integrierte Lösung.
Häufig gestellte Fragen
Keyboard Avoidance ist eine Technik zur Verschiebung der Oberfläche beim Erscheinen der Tastatur, damit das aktive Textfeld sichtbar bleibt. Sie wird über UIScrollView, Keyboard Notifications oder Keyboard Layout Guide iOS 15+ zur automatischen Layout-Anpassung implementiert.
Sie können den Frame der Hauptansicht ändern, wenn die Tastatur erscheint, indem Sie ihre Höhe um die Tastaturhöhe reduzieren. Verwenden Sie UIKeyboardWillShowNotification und UIKeyboardWillHideNotification, um den Frame in einem Animationsblock mit Parametern aus dem userInfo der Benachrichtigung zu aktualisieren.
keyboardLayoutGuide ist ein UILayoutGuide, der zu einem UIScrollView (iOS 15+) hinzugefügt wird. Er verfolgt automatisch die Oberkante der Tastatur und aktualisiert seine NSLayoutConstraint beim Ein- und Ausblenden der Tastatur, wobei die Animation mit der Systemtastatur synchronisiert wird.
IQKeyboardManager ist die beliebteste, benötigt keinen Code. TPKeyboardAvoiding ist eine leichte Alternative. Für neue Projekte sind die integrierten iOS 15+-Tools vorzuziehen, da Drittanbieter-Bibliotheken Method Swizzling verwenden, das Apple nicht empfiehlt.
Wenn Sie IQKeyboardManager verwenden, rufen Sie enabled = false für den spezifischen UIViewController auf. Bei manueller Implementierung abonnieren Sie einfach keine Tastaturbenachrichtigungen auf diesem Bildschirm oder setzen Sie den contentInset beim Erscheinen der Tastatur auf null zurück.
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