UITextField — was es ist, Einrichtung des Eingabefelds und Funktionsprinzip

Autor: IT Sectr Veröffentlicht: 2026-07-06 Lesezeit: 8 Min.

UITextField ist eine standardmäßige UIKit-Komponente für die einzeilige Texteingabe in iOS, die von UIControl erbt und eine breite Palette von Tastaturmodi unterstützt. Laut Apple Developer-Dokumentation (2025) stellt UITextField den Delegaten UITextFieldDelegate mit den Callbacks shouldBeginEditing, shouldChangeCharactersInRange und shouldReturn bereit. Im Gegensatz zu UITextView beschränkt UITextField die Eingabe auf eine einzelne Zeile und unterstützt secureTextEntry, leftView und rightView für benutzerdefinierte Steuerelemente. Dies ist das Hauptelement für Authentifizierungsformulare, Suche, Registrierung und Dateneingabe in iOS-Anwendungen.

Wichtige Punkte

  • UITextField — einzeiliges UIKit-Eingabefeld mit Delegatenunterstützung und benutzerdefinierten Tastaturen
  • UIKeyboardType — 12 Tastaturtypen: numberPad, emailAddress, URL, phonePad und andere
  • UITextFieldDelegate — Verwaltung des Eingabelebenszyklus durch shouldBegin/End/Change-Callbacks
  • Secure Text Entry — Passworteingabemodus mit Ersetzung von Zeichen durch Punkte über isSecureTextEntry
  • Left/Right View — benutzerdefinierte Symbole und Schaltflächen innerhalb des Eingabefelds für UX-Verbesserungen

Was ist UITextField

UITextField ist eine Klasse des UIKit-Frameworks, die für die einzeilige Texteingabe durch den Benutzer entwickelt wurde. Die Klasse erbt von UIControl und ermöglicht das Abonnieren von Eingabeereignissen über den Target-Action-Mechanismus: addTarget(self, action: Selector("textChanged:"), for: editingChanged). UITextField zeigt einen Rahmen (borderStyle), Platzhaltertext, wenn das Feld leer ist, eine Löschtaste (clearButtonMode) und kann linke/rechte Hilfsansichten enthalten. Das Feld zeigt/versteckt die Tastatur automatisch beim Erhalten/Verlieren des Fokus über becomeFirstResponder und resignFirstResponder. Die Feldgröße wird durch intrinsicContentSize basierend auf Schriftart und Rahmenstil bestimmt. Um ein UITextField im Interface Builder (Storyboard/XIB) zu erstellen, verwenden Sie die Objektbibliothek; programmatisch verwenden Sie den Initialisierer UITextField(frame: CGRect). Die Klasse ist vollständig kompatibel mit der modernen iOS-Architektur: Combine-Publisher, @Published in SwiftUI über UIViewRepresentable und Diffable Data Source für Formulare.

UIKeyboardType Tastaturtypen

UITextField unterstützt 12 Tastaturtypen über die Eigenschaft keyboardType. Jeder Typ optimiert den Zeichensatz für ein bestimmtes Eingabeszenario. UIKeyboardType.default — Standard-QWERTY-Tastatur. UIKeyboardType.numberPad — nur Ziffern ohne zusätzliche Symbole (ideal für PIN-Codes und Telefonnummern). UIKeyboardType.emailAddress — Tastatur mit @ und Punkt auf der Hauptebene. UIKeyboardType.URL — Tastatur mit .com, / und Punkt auf der Hauptebene. UIKeyboardType.phonePad — numerisches Tastenfeld mit +, *, # für die Eingabe von Telefonnummern. UIKeyboardType.decimalPad — Ziffern mit Dezimalpunkt für die Eingabe von Preisen. UIKeyboardType.webSearch — Tastatur mit Go-Taste optimiert für Suchanfragen. UIKeyboardType.asciiCapable — nur ASCII-Zeichen für lateinischen Text. Die Tastatur erscheint beim Aufruf von becomeFirstResponder und verschwindet beim Aufruf von resignFirstResponder. Der Tastaturtyp kann während der Bearbeitung dynamisch geändert werden.

TypSzenarioEigenschaften
defaultAllgemeine TexteingabeStandard QWERTY
numberPadPIN, CodeNur Ziffern 0-9
emailAddressE-Mail@ und . auf Hauptebene
URLWebadresse.com, /, . auf Haupt
phonePadTelefonZiffern, +, *, #
decimalPadPreis, ZahlZiffern + Dezimalpunkt

UITextFieldDelegate und seine Methoden

UITextFieldDelegate ist ein Protokoll, das das Verhalten des Textfelds in verschiedenen Phasen der Eingabe definiert. Hauptmethoden: textFieldShouldBeginEditing(textField) — gibt einen Bool zurück, der den Beginn der Bearbeitung erlaubt oder verweigert; textFieldDidBeginEditing — wird aufgerufen, nachdem die Tastatur erscheint; textFieldShouldEndEditing — prüft, ob die Bearbeitung abgeschlossen werden kann (bei false verliert das Feld den Fokus nicht); textFieldDidEndEditing — wird aufgerufen, nachdem die Tastatur verschwindet; textFieldShouldChangeCharactersInRange — wird bei jeder Zeicheneingabe aufgerufen, ermöglicht das Filtern der Eingabe (nur ein Zeichen erlaubt, bei Rückgabe von false wird das Zeichen nicht hinzugefügt); textFieldShouldReturn — wird beim Drücken von Return/Go/Next/Search aufgerufen, um zum nächsten Feld zu wechseln. Der Delegat ist nicht optional: Alle Methoden haben eine Standardimplementierung, aber für benutzerdefiniertes Verhalten müssen Sie die entsprechende Methode überschreiben.

Fokusverwaltung durch shouldReturn

Die shouldReturn-Methode ist das Standardmuster zum Navigieren zwischen Formularfeldern. Implementierung: textFieldShouldReturn(textField) — prüfen Sie, welches textField das Ereignis ausgelöst hat, und verschieben Sie den Fokus über becomeFirstResponder() auf das nächste Feld. Wenn es das letzte Feld ist, rufen Sie resignFirstResponder() auf, um die Tastatur zu verstecken. Verwenden Sie IBOutlet-Collection oder separate IBOutlets für jedes Feld, um Feldreferenzen zu speichern.

Secure Text Entry und benutzerdefinierte left/right Views

isSecureTextEntry — eine UITextField-Eigenschaft, die bei true eingegebene Zeichen durch Punkte (•) ersetzt und das Kopieren von Text über UIMenuController blockiert. Wird für Passwortfelder, PIN-Codes, CVV verwendet. Beim Umschalten zwischen sicherem Modus und Klartext (show/hide password) setzen Sie textField.isSecureTextEntry.toggle(). Wichtig: Beim Ändern von isSecureTextEntry wird der Feldtext zurückgesetzt — speichern Sie ihn vorher. LeftView und RightView sind benutzerdefinierte UIViews, die innerhalb des Eingabefelds links oder rechts angezeigt werden. Typische Verwendung: ein Suchsymbol in leftView, eine „Löschen“-Schaltfläche in rightView. Konfiguration: textField.leftViewMode = always (immer) oder whileEditing (nur während der Bearbeitung). Left/right Views werden automatisch innerhalb des Textfelds unter Berücksichtigung des Abstands positioniert. Die Größe der Ansicht wird über bounds oder Auto Layout festgelegt.

swift
import UIKit

class LoginViewController: UIViewController {
    let passwordField = UITextField()

    override func viewDidLoad() {
        super.viewDidLoad()
        passwordField.isSecureTextEntry = true
        passwordField.placeholder = "Password"
        passwordField.keyboardType = .asciiCapable
        passwordField.delegate = self

        // Benutzerdefinierter Passwort ein-/ausblenden Button
        let showButton = UIButton(type: .system)
        showButton.setTitle("Anzeigen", for: .normal)
        showButton.addTarget(self, action: #selector(togglePasswordVisibility),
                       for: .touchUpInside)
        passwordField.rightView = showButton
        passwordField.rightViewMode = .always
    }

    @objc func togglePasswordVisibility() {
        passwordField.isSecureTextEntry.toggle()
    }
}

Konfiguration von UITextInputTraits

UITextInputTraits ist ein Protokoll, das das visuelle und verhaltensorientierte Erscheinungsbild der Tastatur für UITextField definiert. Haupteigenschaften: autocorrectionType (.default, .no, .yes) — aktiviert oder deaktiviert die Textautokorrektur; autocapitalizationType (.none, .words, .sentences, .allCharacters) — automatische Großschreibung für das erste Zeichen; spellCheckingType — Rechtschreibprüfung; returnKeyType (.done, .go, .next, .search, .send, .continue, .join, .route, .emergencyCall) — Text der Return-Taste auf der Tastatur; enablesReturnKeyAutomatically — automatische Deaktivierung der Return-Taste bei leerem Feld. Für Namenseingabefelder verwenden Sie autocapitalizationType = .words; für E-Mail verwenden Sie autocorrectionType = .no; für URL verwenden Sie keyboardType = .URL + autocapitalizationType = .none. Die Traits werden nach der Initialisierung des Feldes vor seiner Anzeige konfiguriert. Eine dynamische Änderung der Traits aktualisiert die Tastatur bei ihrem nächsten Erscheinen.

Return Key Type und Formularnavigation

Return Key Type definiert den Text der Taste auf der Tastatur: Next — zum nächsten Feld wechseln, Done — Eingabe abschließen, Search — Suche starten, Send — Formular absenden, Continue — mit dem Ausfüllen fortfahren. In Kombination mit der Delegatmethode shouldReturn ermöglicht returnKeyType eine natürliche UX: Der Benutzer füllt die Felder aus, drückt Next, um zum nächsten zu gelangen, und Done, um beim letzten Feld abzusenden. Für die Anpassung des Schaltflächentextes verwenden Sie UIButtonConfiguration in iOS 15+.

Platzhalter, Formatierung und Eingabemaske

Der UITextField-Platzhalter ist der Text, der in Grau angezeigt wird, wenn das Feld leer ist. Konfiguration: textField.placeholder = "Enter email". Zum Anpassen der Farbe und Schriftart des Platzhalters verwenden Sie attributedPlaceholder mit NSAttributedString. Die Eingabemaske wird über die Delegatmethode shouldChangeCharactersInRange implementiert — unterstützt Telefonnummern-, Datums-, Kreditkarten- und SNILS-Formate. Die Eingabemaske ermöglicht die Trennung von Anzeige und Wert: Der Benutzer sieht formatierten Text (z. B. +7 (999) 999-99-99), während das Modell „79999999999“ speichert. Implementierungsbeispiel: Speichern Sie die Maske als Zeichenfolge mit X-Zeichen zum Ersetzen; bei jeder Eingabe erstellen Sie die formatierte Zeichenfolge und geben false in shouldChangeCharactersInRange zurück, wobei Sie den Feldtext über textField.text = formattedText ersetzen. Für Zahlen verwenden Sie NumberFormatter und den decimal keyboardType.

swift
extension LoginViewController: UITextFieldDelegate {
    func textFieldShouldReturn(
        textField: UITextField
    ) -> Bool {
        if textField == emailField {
            passwordField.becomeFirstResponder()
        } else if textField == passwordField {
            textField.resignFirstResponder()
            loginTapped()
        }
        return true
    }

    func textField(
        textField: UITextField,
        shouldChangeCharactersIn range: NSRange,
        replacementString string: String
    ) -> Bool {
        // Leerzeichen in E-Mail blockieren
        if textField == emailField && string == " " {
            return false
        }
        // Passwortlängenbegrenzung
        if textField == passwordField {
            let newLength = (textField.text?.count ?? 0) +
                string.count - range.length
            return newLength <= 32
        }
        return true
    }
}

Codebeispiele: Validierung und Formular

Betrachten wir ein vollständiges Beispiel für die Implementierung eines Anmeldeformulars mit UITextField, E-Mail-Validierung und visuellem Feedback. Das Formular enthält zwei Felder: emailField (emailAddress-Tastatur, keine Autokorrektur) und passwordField (secureTextEntry). Die Validierung erfolgt in shouldChangeCharactersInRange und zusätzlich beim Drücken der Login-Taste. Für visuelles Feedback: roter Rahmen (layer.borderColor) bei Fehler, grün — bei erfolgreicher Validierung. Zurücksetzen des Rahmens bei Bearbeitungsbeginn in textFieldDidBeginEditing.

E-Mail-Validierung mit regulärem Ausdruck

Die E-Mail-Validierung erfolgt über NSPredicate mit dem Format "SELF MATCHES %@" und einem regulären Ausdruck zur grundlegenden Formatprüfung. Die tatsächliche Prüfung der E-Mail-Existenz sollte auf dem Server erfolgen. Für erweiterte Validierung verwenden Sie die Bibliothek SwiftValidators oder Combine-Publisher. Beispiel: NSPredicate(format: "SELF MATCHES [c] %@", emailRegex).evaluate(with: email). Der Feldrahmen wird über einen Animationsblock für einen sanften Übergang aktualisiert.

swift
func validateEmail(textField: UITextField) {
    guard let text = textField.text, !text.isEmpty else {
        textField.layer.borderColor = UIColor.clear.cgColor
        return
    }

    let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.\\p{L}{2,}"
    let predicate = NSPredicate(format: "SELF MATCHES [c] %@", emailRegex)
    let isValid = predicate.evaluate(with: text)

    UIView.animate(withDuration: 0.2) {
        textField.layer.borderColor = isValid
            ? UIColor.systemGreen.cgColor
            : UIColor.systemRed.cgColor
        textField.layer.borderWidth = 1.0
        textField.layer.cornerRadius = 6.0
    }
}

Häufig gestellte Fragen

Wie begrenze ich die Anzahl der Zeichen in UITextField?

Verwenden Sie die Delegatmethode shouldChangeCharactersInRange. Berechnen Sie die neue Textlänge als existingText.count + newText.count - range.length und geben Sie false zurück, wenn das Limit überschritten wird. Alternativ: Abonnieren Sie das Ereignis editingChanged über addTarget und kürzen Sie den Text mit textField.text = String(text.prefix(maxLength)).

Warum reagiert UITextField nicht auf Berührung?

Überprüfen Sie: isUserInteractionEnabled = true (Standard), der Delegat gibt in shouldBeginEditing kein false zurück. Wenn sich das Feld in einem UIScrollView befindet, deaktivieren Sie delaysContentTouches. Wenn sich das Feld in einem modalen Controller befindet, überprüfen Sie, ob dieser Berührungen nicht blockiert. Für SwiftUI UIViewRepresentable überprüfen Sie, ob das Feld korrekt über DispatchQueue.main.async zum firstResponder wird.

Wie verstecke ich die Tastatur durch Tippen außerhalb von UITextField?

Fügen Sie einen UITapGestureRecognizer auf self.view oder scrollView mit target-action hinzu, der view.endEditing(true) aufruft. Alternative: textField.resignFirstResponder() zum Verstecken der Tastatur eines bestimmten Feldes. Implementieren Sie touchesBegan in UIViewController oder verwenden Sie die Bibliothek IQKeyboardManager für automatische Tastaturverwaltung. Vergessen Sie nicht, cancelsTouchesInView für das korrekte Funktionieren der Schaltflächen zu deaktivieren.

Wie ändere ich die Textfarbe und Schriftart von UITextField?

Textfarbe: textField.textColor = UIColor.label. Schriftart: textField.font = UIFont.systemFont(ofSize: 16, weight: .regular). Platzhalterfarbe: textField.attributedPlaceholder = NSAttributedString(string: "Email", attributes: [.foregroundColor: UIColor.secondaryLabel]).

Wie mache ich UITextField schreibgeschützt?

Drei Möglichkeiten: isEnabled = false (ändert das Aussehen), isUserInteractionEnabled = false (behält den visuellen Stil bei) oder geben Sie false im Delegaten textFieldShouldBeginEditing zurück. Die dritte Methode ist vorzuziehen — sie blockiert die Eingabe, ohne den visuellen Stil zu ändern. Zum programmatischen Setzen von Text im schreibgeschützten Modus verwenden Sie den Delegaten.

Zusammenfassung

  • UITextField — einzeiliges UIKit-Eingabefeld mit Vererbung von UIControl und Delegatenverwaltung
  • UIKeyboardType — 12 Tastaturtypen für verschiedene Szenarien: E-Mail, URL, numberPad, phonePad
  • UITextFieldDelegate — Protokoll mit shouldBegin/End/Change/Return-Methoden zur Eingabeverwaltung
  • Secure Text Entry — Passwortmodus über isSecureTextEntry mit Zeichenersetzung durch Punkte
  • Left/Right View — benutzerdefinierte Elemente im Feld (Symbole, Schaltflächen) mit always/whileEditing-Modi
  • Return Key Type — Return-Tastenkonfiguration: Next, Done, Search, Send für Formularnavigation
  • Validierung — über shouldChangeCharactersInRange mit Regex und visuellem Feedback durch Rahmen
  • Platzhalter wird über attributedPlaceholder mit NSAttributedString für benutzerdefiniertes Styling konfiguriert

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.

Projekt besprechen

Lesen Sie auch