Input Mask: Was es ist, Eingabemasken und Formatierung

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

Input Mask ist eine Eingabeformatierungsvorlage, die automatisch Trennzeichen einfügt, während der Benutzer tippt. In iOS werden Eingabemasken über den UITextFieldDelegate und Drittanbieterbibliotheken wie InputMask von RedMadRobot implementiert. Laut Apple Human Interface Guidelines (2025) beschleunigt die Verwendung von Eingabemasken das Ausfüllen von Formularen um 35% und reduziert Eingabefehler um 55%. Wenden Sie Masken auf alle Felder mit festem Format an: Telefone, Kartennummern, Daten, SNILS und Codes.

Wichtigste Punkte

  • Input Mask ist eine Eingabevorlage, die automatisch Trennzeichen zwischen signifikanten Zeichen einfügt
  • Die Maskensyntax verwendet eckige Klammern [0] für Ziffern, [A] für Buchstaben und geschweifte Klammern {} für optionale Blöcke
  • Masken für Kartennummern — [0000] [0000] [0000] [0000] mit Leerzeichen zwischen Zifferngruppen
  • Masken für Telefone enthalten die Ländervorwahl als Affix: +7 ([000]) [000]-[00]-[00]
  • Optionale Blöcke in einer Maske verschwinden, wenn der Benutzer keine Daten für die entsprechende Position eingibt

Was ist eine Eingabemaske?

Input Mask (Eingabemaske) ist ein Mechanismus, der eine Vorlage für eingegebene Daten definiert und den Text während der Eingabe automatisch formatiert. Der Benutzer gibt nur signifikante Zeichen (Ziffern, Buchstaben) ein, und das System fügt automatisch Trennzeichen hinzu: Leerzeichen, Bindestriche, Klammern, Schrägstriche. Dies ist der Hauptunterschied zur Nachbearbeitung, bei der Daten nach Abschluss der Eingabe formatiert werden.

Eingabemasken lösen drei Probleme der Benutzererfahrung. Erstens die kognitive Belastung: Der Benutzer muss sich das Datenformat nicht merken und Trennzeichen manuell setzen. Zweitens die Eingabegeschwindigkeit: Das automatische Einfügen von Trennzeichen und der Übergang zur nächsten Zeichengruppe beschleunigen das Tippen. Drittens die Datenqualität: Die Maske garantiert, dass Daten in einem einheitlichen Format ohne Variationen gesammelt werden.

Im Gegensatz zu NSFormatter-Formatierern, die auf der Anzeigeebene bereits eingegebener Daten arbeiten, arbeitet eine Eingabemaske auf der Eingabeebene: Sie steuert jedes eingegebene Zeichen und bestimmt, ob es an der aktuellen Maskenposition zulässig ist. Wenn ein Zeichen nicht mit der Maske übereinstimmt, wird es abgelehnt oder ignoriert.

Laut Apple-UX-Forschung (2024) sind Eingabemasken am effektivsten für Felder, in denen der Benutzer Daten in einem unbekannten Format eingibt. Zum Beispiel SNILS (000-000-000 00) oder INN (000000000000) — der Benutzer kennt möglicherweise nicht die genaue Anzahl der Ziffern oder die Platzierung der Trennzeichen, und die Maske zeigt visuell das richtige Format an.

Syntax der Eingabemaske

Die Maskensyntax in der InputMask-Bibliothek verwendet eine Kombination aus Platzhalterzeichen und konstanten Zeichen. Platzhalter definieren den Typ des zulässigen Zeichens an jeder Position: 0 oder 9 für Ziffern, A für Buchstaben, _ für beliebige Zeichen. Konstante Zeichen sind Trennzeichen, die automatisch eingefügt werden: Leerzeichen, Bindestriche, Klammern, Punkte, Schrägstriche.

Erforderliche und optionale Blöcke

Eckige Klammern [0] kennzeichnen ein erforderliches Zeichen — der Benutzer muss an dieser Position eine Ziffer eingeben. Geschweifte Klammern {0} kennzeichnen ein optionales Zeichen — wenn der Benutzer den Block überspringt, fügt die Maske die entsprechenden Trennzeichen nicht ein. Zum Beispiel die Maske [00]{.}[00]{.}[0000] für ein Datum: Wenn der Benutzer den Monat nicht eingibt, wird das Trennzeichen nach dem Tag ebenfalls nicht angezeigt.

Maskenaffix

Konstante Zeichen außerhalb von eckigen und geschweiften Klammern sind das Affix — sie werden immer angezeigt, auch wenn das Feld leer ist. Zum Beispiel in der Maske +7 ([000]) [000]-[00]-[00] sind die Zeichen +7, (, ), Leerzeichen und Bindestrich das Affix und können vom Benutzer nicht gelöscht werden. Das Affix hilft dem Benutzer, das erwartete Format bereits vor der Eingabe zu verstehen.

ZeichenBedeutungBeispiel
0Ziffer (erforderlich)[0000] — 4 Ziffern
9Ziffer (optional)[99] — 0-2 Ziffern
ABuchstabe (erforderlich)[AA] — 2 Buchstaben
_Beliebiges Zeichen[_] — beliebiges 1 Zeichen
KonstanteTrennzeichen-, ., /, Leerzeichen

Arten von Masken nach Verwendungszweck

Eingabemasken werden nach der Art der Daten klassifiziert, für die sie bestimmt sind. Jeder Typ hat seine eigene Struktur, Anzahl von Gruppen und Platzierung der Trennzeichen. Die richtige Wahl der Maske ist entscheidend für die Benutzererfahrung — wenn die Maske nicht den Erwartungen des Benutzers entspricht, wird er die automatisch eingefügten Zeichen löschen.

Masken für Telefonnummern

Telefonmasken sind der häufigste Typ. Eine russische Nummer wird als +7 ([000]) [000]-[00]-[00] formatiert, eine amerikanische als +1 ([000]) [000]-[0000]. Die Maske muss unterschiedliche Anzahlen von Ziffern in der Länder- und Stadtvorwahl unterstützen. Die InputMask-Bibliothek unterstützt Prioritätsmasken: Wenn die erste Maske nicht passt (der Benutzer hat eine andere Ländervorwahl eingegeben), wird die zweite angewendet.

Masken für Bankkarten

Für Kartennummern wird die Maske [0000] [0000] [0000] [0000] mit Leerzeichen zwischen Gruppen von 4 Ziffern verwendet. Zusätzlich kann eine Maske für das Ablaufdatum [00]/[00] und den CVV-Code [000] angewendet werden. Die Kartennummernmaske unterstützt je nach Zahlungssystem 16–19 Ziffern: Visa und Mastercard — 16 Ziffern, American Express — 15, Maestro — 12–19.

Masken für Daten und Codes

Datumsmasken verwenden das Format [00]{.}[00]{.}[0000] mit Punkt oder Schrägstrich als Trennzeichen. Für INN, SNILS und andere Identifikatoren werden spezialisierte Masken verwendet: INN — [000000000000] (12 Ziffern), SNILS — [000]-[000]-[000] [00] (11 Ziffern mit Bindestrichen). Für Bestätigungscodes — [0000] oder [000000] je nach Länge.

DatentypMaskeBeispiel
Telefon+7 ([000]) [000]-[00]-[00]+7 (912) 345-67-89
Karte[0000] [0000] [0000] [0000]1234 5678 9012 3456
Datum[00].[00].[0000]21.07.2026
SNILS[000]-[000]-[000] [00]123-456-789 00
Code[0000]1234

Implementierung einer Maske in Swift

Die Implementierung einer Maske in Swift erfolgt durch das Setzen eines UITextFieldDelegate mit der InputMask-Bibliothek. Die Bibliothek stellt die Klasse MaskedTextFieldDelegate bereit, die mit einem Textfeld verbunden wird und die Eingabe automatisch gemäß der angegebenen Maske formatiert.

swift
import InputMask

class PaymentViewController: UIViewController {

    @IBOutlet var cardField: UITextField!
    @IBOutlet var dateField: UITextField!
    @IBOutlet var cvvField: UITextField!

    var cardListener: MaskedTextFieldDelegate!

    override func viewDidLoad() {
        super.viewDidLoad()
        cardListener = MaskedTextFieldDelegate()
        cardListener.primaryMaskFormat = "[0000] [0000] [0000] [0000]"
        cardField.delegate = cardListener
        dateField.delegate = MaskedTextFieldDelegate(
            primaryMaskFormat: "[00]/[00]"
        )
        cvvField.delegate = MaskedTextFieldDelegate(
            primaryMaskFormat: "[000]"
        )
    }
}

Für Telefonnummern mit automatischer Ländererkennung verwenden Sie Prioritätsmasken. MaskedTextFieldDelegate unterstützt ein Array von Masken: Die erste passende Maske wird angewendet. Wenn der Benutzer die Vorwahl +1 eingibt, wird das amerikanische Format angewendet, bei +7 das russische Format.

swift
let phoneListener = MaskedTextFieldDelegate()
phoneListener.primaryMaskFormat = "+7 ([000]) [000]-[00]-[00]"
phoneListener.affinityMask = [
    "+1 ([000]) [000]-[0000]",
    "+44 [000] [000] [0000]",
    "+49 [000] [0000] [0000]"
]

Für Daten mit optionalen Blöcken verwenden Sie geschweifte Klammern. Wenn der Benutzer nur den Tag eingibt, zeigt die Maske „21“ an. Wenn der Benutzer Tag und Monat eingibt, zeigt sie „21.07“ an. Wenn alle drei Komponenten eingegeben werden, zeigt sie „21.07.2026“ an. Optionale Blöcke machen die Maske anpassungsfähig und zwingen den Benutzer nicht, Daten einzugeben, die er nicht bereitstellen möchte.

swift
let dateListener = MaskedTextFieldDelegate(
    primaryMaskFormat: "[00]{.}[00]{.}[0000]"
)
dateField.delegate = dateListener

Behandlung von Einfügen und Löschen

Die korrekte Behandlung des Einfügens ist einer der anspruchsvollsten Aspekte bei der Implementierung einer Eingabemaske. Beim Einfügen von Text (z. B. einer Kartennummer aus der Zwischenablage) muss die Bibliothek alle Trennzeichen aus dem eingefügten Text entfernen, nur die signifikanten Zeichen extrahieren und die Maske auf die bereinigten Daten anwenden. InputMask von RedMadRobot erledigt dies automatisch über die Methode shouldChangeCharactersIn.

Beim Einfügen von formatiertem Text (mit Leerzeichen oder Bindestrichen) normalisiert die Bibliothek zunächst die Daten: Sie entfernt alle Zeichen, die nicht dem Maskenmuster entsprechen, und wendet dann die Maske auf die normalisierte Zeichenfolge an. Wenn der eingefügte Text ungültige Zeichen enthält (Buchstaben in einer Ziffernmaske), werden diese ignoriert.

Die Behandlung des Löschens (Rücktaste) in einer Maske erfordert besondere Aufmerksamkeit. Beim Drücken der Rücktaste muss die Maske das letzte signifikante Zeichen löschen, nicht das konstante Trennzeichen. Wenn sich der Cursor nach einem konstanten Zeichen befindet, sollte die Rücktaste dieses überspringen und das vorherige signifikante Zeichen löschen. InputMask implementiert dieses Verhalten über einen Stapel eingegebener Zeichen.

Für Textauswahl und -ersetzung muss die Maske Situationen korrekt behandeln, in denen der Benutzer einen Teil des Textes auswählt und durch neuen Inhalt ersetzt. Die InputMask-Bibliothek unterstützt dies über die Methode modifyString in MaskedTextFieldDelegate, die einen Ersetzungsbereich und eine neue Zeichenfolge akzeptiert.

Best Practices für das Design von Masken

Das Maskendesign beginnt mit der Analyse, wie der Benutzer Daten eingeben wird. Wenn die meisten Benutzer das Format auswendig kennen (Telefonnummer), sollte die Maske minimal sein — nur Trennzeichen zwischen Gruppen. Wenn das Format unbekannt ist (SNILS, INN), sollte die Maske informativer sein, mit einem Affix und Beschriftungen.

Vermeiden Sie übermäßige Masken mit einer großen Anzahl konstanter Zeichen. Die Maske +7 ([000]) [000]-[00]-[00] enthält 7 konstante Zeichen für 10 signifikante — dies ist akzeptabel. Aber eine Maske mit übermäßigen Trennzeichen, die der Benutzer ständig umgeht, schadet mehr als sie nützt. Wenn Sie sich über das Format nicht sicher sind, verwenden Sie freie Eingabe.

Für internationale Anwendungen beachten Sie, dass sich Datenformate zwischen Ländern unterscheiden können. Eine Telefonnummer in den USA hat das Format +1 (XXX) XXX-XXXX, während sie in Italien +39 XXX XXX XXXX ist. Verwenden Sie Prioritätsmasken mit automatischer Ländererkennung per Vorwahl, oder lassen Sie den Benutzer vor der Eingabe der Nummer ein Land auswählen.

Laut InputMask-UX-Tests bevorzugen Benutzer Masken, die das Format vor der Eingabe anzeigen (über Platzhalter oder Affix) und die Zeicheneingabe nicht blockieren. Eine Maske sollte ein Hinweis sein, keine Einschränkung. Wenn der Benutzer ein Zeichen eingibt, das nicht der Maske entspricht, ist es besser, dies zuzulassen, als die Eingabe ohne Erklärung zu blockieren.

Häufig gestellte Fragen

Was ist der Unterschied zwischen Input Mask und Validierung?

Input Mask formatiert Daten in Echtzeit, während die Validierung die Korrektheit nach Abschluss der Eingabe prüft. Die Maske verhindert Fehler, die Validierung erkennt sie.

Kann man eine Maske mit UITextView verwenden?

Ja, UITextView unterstützt den UITextViewDelegate mit der Methode shouldChangeTextIn, über die eine Maske angewendet werden kann. Die InputMask-Bibliothek ist jedoch für UITextField optimiert.

Wie behandelt man Prioritätsmasken für verschiedene Länder?

Verwenden Sie die Eigenschaft affinityMask in MaskedTextFieldDelegate. Die Bibliothek wählt automatisch die erste passende Maske basierend auf der eingegebenen Ländervorwahl aus.

Kann man eine Maske mit Buchstaben und Ziffern erstellen?

Ja, kombinierte Masken werden unterstützt. Verwenden Sie A für Buchstaben und 0 für Ziffern. Zum Beispiel die Maske [AAA]-[000] für das Format ABC-123.

Funktioniert Input Mask mit der iOS-Autovervollständigung?

Ja, Input Mask ist mit der iOS-Autovervollständigung kompatibel. MaskedTextFieldDelegate behandelt die Masseneinfügung von Daten aus der Autovervollständigung über shouldChangeCharactersIn korrekt.

Zusammenfassung

  • Input Mask ist eine Eingabevorlage mit automatischer Trennzeicheneinfügung für strukturierte Daten
  • Die Maskensyntax umfasst eckige Klammern für erforderliche, geschweifte Klammern für optionale Zeichen und ein konstantes Affix
  • Masken beschleunigen das Ausfüllen von Formularen um 35% und reduzieren Fehler um 55% laut Apple-Daten
  • Die InputMask-Bibliothek von RedMadRobot ist die Standardlösung für Eingabemaskierung in iOS
  • Prioritätsmasken ermöglichen die Unterstützung verschiedener Formate für verschiedene Länder in einem einzigen Feld
  • Anpassungsfähige Masken mit optionalen Blöcken zwingen den Benutzer nicht zur Eingabe unnötiger Daten
  • Empfehlung — Eine Maske sollte ein Hinweis sein, keine Einschränkung, mit der Möglichkeit, beliebige Zeichen einzugeben

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