Text Content Type: τι είναι, σημασιολογικοί τύποι και UIKit

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-07-07 Χρόνος ανάγνωσης: 8 λεπ

Text Content Type — είναι ένας μηχανισμός iOS που ενημερώνει το σύστημα ποια δεδομένα αναμένει ένα πεδίο κειμένου. Το UIKit παρέχει σταθερές UITextContentType για τη σήμανση πεδίων εισαγωγής: email, κωδικός πρόσβασης, τηλέφωνο, όνομα χρήστη και δεκάδες άλλους σημασιολογικούς τύπους. Σύμφωνα με το Apple Human Interface Guidelines (2025), η σωστή ρύθμιση του content type αυξάνει την ταχύτητα συμπλήρωσης φορμών κατά 40% χάρη στην αυτόματη συμπλήρωση και το προσαρμοστικό πληκτρολόγιο. Χρησιμοποιήστε UITextContentType σε κάθε πεδίο κειμένου — βελτιώνει την εμπειρία χρήστη και μειώνει τον αριθμό σφαλμάτων εισαγωγής.

Κύρια σημεία

  • Text Content Type — σημασιολογική ετικέτα για UITextField και UITextView που υποδεικνύει τον τύπο των αναμενόμενων δεδομένων
  • UITextContentType περιέχει περισσότερους από 30 προκαθορισμένους τύπους: email, τηλέφωνο, κωδικός πρόσβασης, διεύθυνση, όνομα, επώνυμο και άλλα
  • Αυτόματη συμπλήρωση λειτουργεί μόνο με σωστά καθορισμένο content type — το σύστημα αντιστοιχίζει το πεδίο με δεδομένα από την αλυσίδα κλειδιών
  • Πληκτρολόγιο προσαρμόζεται στον τύπο: για email εμφανίζει @, για τηλέφωνο — αριθμητική διάταξη
  • Ασφάλεια — για κωδικούς πρόσβασης και εφάπαξ κωδικούς χρησιμοποιήστε τους κατάλληλους τύπους για να ενεργοποιήσετε την ενσωμάτωση με το iCloud Keychain

Τι είναι το Text Content Type;

Text Content Type (UITextContentType) — είναι μια ιδιότητα των πεδίων κειμένου UIKit που ενημερώνει το iOS ποια σημασιολογικά δεδομένα αναμένει το πεδίο εισαγωγής. Το σύστημα χρησιμοποιεί αυτές τις πληροφορίες για δύο σκοπούς: επιλογή κατάλληλης διάταξης πληκτρολογίου και ενεργοποίηση του μηχανισμού αυτόματης συμπλήρωσης από την αλυσίδα κλειδιών (iCloud Keychain).

Στο iOS 5 εισήχθη η πρώτη έκδοση των σημασιολογικών τύπων, και στο iOS 17 το σύνολο UITextContentType επεκτάθηκε σε 34 σταθερές, συμπεριλαμβανομένων νέων τύπων για εφάπαξ κωδικούς, ταχυδρομικούς κώδικες και ονόματα οδών. Κάθε σταθερά αντιπροσωπεύει μια συμβολοσειρά που το σύστημα αντιστοιχίζει με εσωτερικούς κανόνες επεξεργασίας.

Ο μηχανισμός λειτουργεί σε επίπεδο UITextInputTraits — του πρωτοκόλλου που κληρονομούν τα UITextField, UITextView και UISearchBar. Αυτό σημαίνει ότι το content type είναι διαθέσιμο σε όλα τα τυπικά στοιχεία εισαγωγής χωρίς πρόσθετη διαμόρφωση.

Σύμφωνα με το WWDC 2024 Session 101, η Apple συνιστά τον καθορισμό content type για κάθε πεδίο κειμένου στη διεπαφή — ακόμα κι αν δεν προβλέπεται αυτόματη συμπλήρωση. Η ίδια η ετικέτα βοηθά το VoiceOver να ανακοινώνει σωστά τον σκοπό του πεδίου για χρήστες με αναπηρίες.

Διαθέσιμοι τύποι UITextContentType

Το UIKit παρέχει μια ιεραρχία τύπων χωρισμένων σε κατηγορίες. Οι κύριες ομάδες περιλαμβάνουν δεδομένα ταυτοποίησης (όνομα, επώνυμο, όνομα χρήστη), πληροφορίες επικοινωνίας (email, τηλέφωνο, διεύθυνση) και λογαριασμούς (κωδικός πρόσβασης, εφάπαξ κωδικός). Κάθε ομάδα ενεργοποιεί διαφορετικούς μηχανισμούς αυτόματης συμπλήρωσης.

Στοιχεία επικοινωνίας

Η ομάδα τύπων επικοινωνίας περιλαμβάνει τα `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` και `.city`. Αυτοί οι τύποι ενεργοποιούν την αυτόματη συμπλήρωση από επαφές και iCloud Keychain. Το πεδίο με τύπο `.emailAddress` προτείνει αυτόματα προηγούμενες διευθύνσεις email, και το `.telephoneNumber` — αριθμούς τηλεφώνου από το βιβλίο διευθύνσεων.

Λογαριασμοί

Για πεδία σύνδεσης προορίζονται τα .username, .password και .newPassword. Ο τύπος .username ενεργοποιεί τον διαχειριστή κωδικών iCloud που προσφέρει αποθηκευμένους λογαριασμούς. Το πεδίο με τύπο .newPassword εκκινεί τη δημιουργία ασφαλούς κωδικού μέσω iCloud Keychain κατά την πρώτη εισαγωγή.

Εξειδικευμένοι τύποι iOS 17+

Από το iOS 17, η Apple πρόσθεσε το .oneTimeCode για κωδικούς επιβεβαίωσης SMS και το .shipmentTrackingNumber για παρακολούθηση δεμάτων. Ο τύπος .oneTimeCode αναγνωρίζει αυτόματα κωδικούς από μηνύματα και τους προσφέρει στη γραμμή QuickType χωρίς να χρειάζεται να ανοίξετε την εφαρμογή Messages.

ΚατηγορίαΤύποιiOS
Ταυτοποίηση.name, .givenName, .familyName, .nickname5+
Επαφές.emailAddress, .telephoneNumber, .fullStreetAddress5+
Λογαριασμοί.username, .password, .newPassword5+
Τοποθεσία.location, .city, .state, .postalCode10+
Δεδομένα καρτών.creditCardNumber, .creditCardSecurityCode12+
Εφάπαξ κωδικοί.oneTimeCode17+

Κάθε τύπος αντιπροσωπεύεται από μια σταθερά συμβολοσειράς, αλλά η σύγκριση πρέπει να γίνεται μέσω του τελεστή ==, όχι μέσω rawValue. Το iOS μπορεί να προσθέσει νέους τύπους σε μελλοντικές εκδόσεις, γι' αυτό στο switch-case χρησιμοποιείτε πάντα τον κλάδο default.

Προσαρμογή πληκτρολογίου στον τύπο περιεχομένου

UIKeyboardType και UITextContentType λειτουργούν μαζί: το keyboard type καθορίζει τη διάταξη του πληκτρολογίου, και το content type — τα πρόσθετα κουμπιά στη γραμμή QuickType. Εάν έχει οριστεί content type, το iOS μπορεί να παρακάμψει το keyboard type για βέλτιστη εισαγωγή. Για παράδειγμα, με τον τύπο `.emailAddress` το πληκτρολόγιο εμφανίζει αυτόματα το σύμβολο @ στο κύριο επίπεδο.

Για πεδίο με τύπο .telephoneNumber το iOS αλλάζει το πληκτρολόγιο σε τηλεφωνική διάταξη ανεξάρτητα από το ρυθμισμένο keyboard type. Αυτή η συμπεριφορά δεν μπορεί να απενεργοποιηθεί — το σύστημα θεωρεί την προτεραιότητα του content type υψηλότερη από τη ρητή διαμόρφωση πληκτρολογίου. Οι προγραμματιστές δεν χρειάζεται να αντιγράφουν τις ρυθμίσεις και των δύο ιδιοτήτων.

Οι τύποι .URL και .emailAddress προσθέτουν στο πληκτρολόγιο τα κουμπιά .com και @ αντίστοιχα. Ο τύπος .decimalPad με content type .creditCardNumber εμφανίζει αριθμητικό πληκτρολόγιο με δεκαδικό διαχωριστή, που είναι βολικό για εισαγωγή ποσών και αριθμών καρτών. Σύμφωνα με το Apple Human Interface Guidelines, ο χρήστης αναμένει το πληκτρολόγιο να αντιστοιχεί στον τύπο των εισαγόμενων δεδομένων, όχι το αντίθετο.

Εξαίρεση αποτελεί το .oneTimeCode — αυτός ο τύπος δεν αλλάζει τη διάταξη του πληκτρολογίου, αλλά ενεργοποιεί τη γραμμή QuickType με κωδικούς από SMS. Ο χρήστης βλέπει την πρόταση κωδικού πάνω από το πληκτρολόγιο και μπορεί να την εισαγάγει με ένα πάτημα. Ο μηχανισμός λειτουργεί μόνο για πεδία που γίνονται first responder μετά τη λήψη SMS.

Αυτόματη συμπλήρωση και αλυσίδα κλειδιών

Αυτόματη συμπλήρωση στο iOS χρησιμοποιεί το Text Content Type για να αντιστοιχίσει πεδία εισαγωγής με δεδομένα από το iCloud Keychain και το ASCredentialProviderViewController. Το σύστημα αναλύει όλα τα πεδία στην οθόνη, καθορίζει τους σημασιολογικούς τύπους τους και προσφέρει τα αντίστοιχα αποθηκευμένα δεδομένα. Χωρίς σωστά καθορισμένους τύπους, η αυτόματη συμπλήρωση δεν ενεργοποιείται.

Για τη λειτουργία της αυτόματης συμπλήρωσης πρέπει να πληρούνται τρεις προϋποθέσεις. Πρώτον — το πεδίο πρέπει να έχει σωστό UITextContentType. Δεύτερον — η οθόνη πρέπει να περιέχει τουλάχιστον δύο πεδία με διαφορετικούς τύπους (π.χ. .username και .password). Τρίτον — η εφαρμογή πρέπει να υποστηρίζει Associated Domains με entitlement webcredentials για συγχρονισμό με τον ιστότοπο.

Η αλυσίδα κλειδιών (Keychain) χρησιμοποιεί το content type για την ταξινόμηση αποθηκευμένων εγγραφών. Εάν ένα πεδίο είναι επισημασμένο ως .password, το σύστημα αποθηκεύει την εισαγόμενη τιμή στο iCloud Keychain και την προσφέρει κατά την επόμενη σύνδεση. Τα πεδία με τύπο .creditCardNumber αποθηκεύονται αυτόματα στο Wallet μετά από επιβεβαίωση μέσω Face ID.

Για εφάπαξ κωδικούς τύπου .oneTimeCode, το iOS 17 χρησιμοποιεί έναν νέο μηχανισμό AutoFill OTP που δεν απαιτεί άμεση πρόσβαση σε SMS. Το σύστημα υποκλέπτει κωδικούς από μηνύματα σε επίπεδο λειτουργικού συστήματος και τους μεταδίδει στην εφαρμογή μέσω της γραμμής QuickType, αποφεύγοντας την ανάγνωση του περιεχομένου των μηνυμάτων από την εφαρμογή.

Παραδείγματα χρήσης σε Swift

Η βασική διαμόρφωση του Text Content Type σε Swift γίνεται μέσω της ιδιότητας textContentType στον κώδικα ή μέσω του Interface Builder. Στον κώδικα, η ανάθεση σταθεράς καταλαμβάνει μία γραμμή, ενώ στο IB ο επιθυμητός τύπος επιλέγεται από την αναπτυσσόμενη λίστα στον επιθεωρητή χαρακτηριστικών.

swift
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"

let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword

Για προγραμματιστική δημιουργία φόρμας σύνδεσης με αυτόματη συμπλήρωση, χρησιμοποιήστε και τα δύο πεδία με διαφορετικά content type. Το σύστημα θα τα συνδέσει αυτόματα ως όνομα χρήστη και κωδικό πρόσβασης. Εάν η εφαρμογή υποστηρίζει βιομετρική σύνδεση, προσθέστε ένα πεδίο με τύπο .username για σωστή αναγνώριση λογαριασμού.

swift
class LoginViewController: UIViewController {

    @IBOutlet var usernameField: UITextField!
    @IBOutlet var passwordField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        usernameField.textContentType = .username
        passwordField.textContentType = .password
        passwordField.autocorrectionType = .no
    }
}

Για πεδίο εισαγωγής εφάπαξ κωδικού από SMS, καθορίστε τον τύπο .oneTimeCode. Το σύστημα θα προτείνει αυτόματα τον κωδικό στη γραμμή QuickType μετά τη λήψη του. Ο προγραμματιστής δεν χρειάζεται να ζητήσει άδεια ανάγνωσης SMS ή να υλοποιήσει δική του ανάλυση μηνυμάτων.

swift
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"

Για iOS 17+, ο τύπος .oneTimeCode υποστηρίζει αυτόματη συμπλήρωση χωρίς εστίαση στο πεδίο. Εάν ο χρήστης λάβει SMS με τον κωδικό, το iOS τον προσφέρει στην οθόνη κλειδώματος, και μετά το ξεκλείδωμα ο κωδικός εισάγεται αυτόματα στο ενεργό πεδίο με το αντίστοιχο content type.

Συστάσεις για την επιλογή τύπου

Η επιλογή του σωστού τύπου επηρεάζει άμεσα τη μετατροπή της φόρμας και την εμπειρία χρήστη. Η Apple συνιστά ανεπιφύλακτα τον καθορισμό του πιο συγκεκριμένου διαθέσιμου τύπου. Για παράδειγμα, για πεδίο ονόματος χρησιμοποιήστε .givenName, όχι το γενικό .name — αυτό θα επιτρέψει στο σύστημα να προτείνει αυτόματη συμπλήρωση από επαφές με το σωστό όνομα.

Αποφύγετε το συνηθισμένο λάθος — τη ρύθμιση .emailAddress για πεδίο username. Εάν η εφαρμογή χρησιμοποιεί email ως όνομα χρήστη, καθορίστε τύπους .username για το πεδίο σύνδεσης και .password για το πεδίο κωδικού. Ο τύπος .emailAddress προορίζεται αποκλειστικά για πεδία εισαγωγής email ως στοιχείου επικοινωνίας, όχι ως αναγνωριστικού.

Για φόρμες με πολλαπλά πεδία του ίδιου τύπου (π.χ. δύο διευθύνσεις email), χρησιμοποιήστε την ιδιότητα .textContentType για κάθε πεδίο, αλλά προσθέστε διαφορετικά αναγνωριστικά accessibilityIdentifier. Αυτό θα βοηθήσει το VoiceOver να ανακοινώνει σωστά τα πεδία, αν και το σύστημα αυτόματης συμπλήρωσης μπορεί να προτείνει την ίδια επιλογή και για τα δύο πεδία.

Δοκιμάστε την αυτόματη συμπλήρωση σε πραγματική συσκευή με συμπληρωμένη αλυσίδα κλειδιών. Ο προσομοιωτής δεν υποστηρίζει πλήρως το iCloud Keychain και η συμπεριφορά της αυτόματης συμπλήρωσης μπορεί να διαφέρει. Σύμφωνα με το Apple Developer Forums (2025), τα πιο συνηθισμένα προβλήματα με την αυτόματη συμπλήρωση προκύπτουν ακριβώς από εσφαλμένο content type.

Συχνές Ερωτήσεις

Ποια είναι η διαφορά μεταξύ textContentType και keyboardType;

UITextContentType καθορίζει τον σημασιολογικό τύπο δεδομένων, ενώ το UIKeyboardType καθορίζει τη διάταξη του πληκτρολογίου. Το content type μπορεί να παρακάμψει το keyboard type για βέλτιστη εισαγωγή.

Ποιοι τύποι ενεργοποιούν την αυτόματη συμπλήρωση από το iCloud Keychain;

Την αυτόματη συμπλήρωση ενεργοποιούν οι τύποι .username, .password, .newPassword, .emailAddress, .telephoneNumber και .creditCardNumber. Το σύστημα αντιστοιχίζει αυτούς τους τύπους με δεδομένα από την αλυσίδα κλειδιών.

Λειτουργεί το Text Content Type στο WKWebView;

Ναι, το WKWebView υποστηρίζει Text Content Type για πεδία HTML με χαρακτηριστικό autocomplete. Το iOS αντιστοιχίζει αυτόματα τα χαρακτηριστικά autocomplete με τύπους UITextContentType.

Πρέπει να καθοριστεί content type για UITextView;

Ναι, το UITextView κληρονομεί επίσης το UITextInputTraits και υποστηρίζει την ιδιότητα textContentType. Αυτό είναι χρήσιμο για πεδία εισαγωγής στοιχείων επικοινωνίας πολλαπλών γραμμών.

Τι συμβαίνει όταν ο τύπος έχει καθοριστεί λανθασμένα;

Το σύστημα μπορεί να προτείνει λανθασμένα δεδομένα για αυτόματη συμπλήρωση ή να μην προτείνει τίποτα. Για παράδειγμα, ένα πεδίο username με τύπο .emailAddress μπορεί να εισαγάγει email αντί για όνομα χρήστη.

Σύνοψη

  • Text Content Type — σημασιολογική σήμανση πεδίων εισαγωγής iOS που καθορίζει τον τύπο των αναμενόμενων δεδομένων
  • UITextContentType περιλαμβάνει πάνω από 30 σταθερές για διαφορετικές κατηγορίες: επαφές, λογαριασμοί, τοποθεσία, δεδομένα πληρωμής
  • Πληκτρολόγιο προσαρμόζεται αυτόματα στο content type, εμφανίζοντας κατάλληλους χαρακτήρες και διάταξη
  • Αυτόματη συμπλήρωση από το iCloud Keychain ενεργοποιείται μόνο με σωστά καθορισμένους τύπους πεδίων
  • Μηχανισμός OTP στο iOS 17+ επιτρέπει αυτόματη εισαγωγή κωδικών από SMS χωρίς πρόσβαση σε μηνύματα
  • VoiceOver χρησιμοποιεί content type για σωστή ανακοίνωση του σκοπού του πεδίου
  • Σύσταση — καθορίστε τον πιο συγκεκριμένο τύπο για κάθε πεδίο και δοκιμάστε την αυτόματη συμπλήρωση σε πραγματική συσκευή

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης