Text Content Type — είναι ένας μηχανισμός iOS που ενημερώνει το σύστημα ποια δεδομένα αναμένει ένα πεδίο κειμένου. Το UIKit παρέχει σταθερές UITextContentType για τη σήμανση πεδίων εισαγωγής: email, κωδικός πρόσβασης, τηλέφωνο, όνομα χρήστη και δεκάδες άλλους σημασιολογικούς τύπους. Σύμφωνα με το Apple Human Interface Guidelines (2025), η σωστή ρύθμιση του content type αυξάνει την ταχύτητα συμπλήρωσης φορμών κατά 40% χάρη στην αυτόματη συμπλήρωση και το προσαρμοστικό πληκτρολόγιο. Χρησιμοποιήστε UITextContentType σε κάθε πεδίο κειμένου — βελτιώνει την εμπειρία χρήστη και μειώνει τον αριθμό σφαλμάτων εισαγωγής.
Κύρια σημεία
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 να ανακοινώνει σωστά τον σκοπό του πεδίου για χρήστες με αναπηρίες.
Το UIKit παρέχει μια ιεραρχία τύπων χωρισμένων σε κατηγορίες. Οι κύριες ομάδες περιλαμβάνουν δεδομένα ταυτοποίησης (όνομα, επώνυμο, όνομα χρήστη), πληροφορίες επικοινωνίας (email, τηλέφωνο, διεύθυνση) και λογαριασμούς (κωδικός πρόσβασης, εφάπαξ κωδικός). Κάθε ομάδα ενεργοποιεί διαφορετικούς μηχανισμούς αυτόματης συμπλήρωσης.
Η ομάδα τύπων επικοινωνίας περιλαμβάνει τα `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` και `.city`. Αυτοί οι τύποι ενεργοποιούν την αυτόματη συμπλήρωση από επαφές και iCloud Keychain. Το πεδίο με τύπο `.emailAddress` προτείνει αυτόματα προηγούμενες διευθύνσεις email, και το `.telephoneNumber` — αριθμούς τηλεφώνου από το βιβλίο διευθύνσεων.
Για πεδία σύνδεσης προορίζονται τα .username, .password και .newPassword. Ο τύπος .username ενεργοποιεί τον διαχειριστή κωδικών iCloud που προσφέρει αποθηκευμένους λογαριασμούς. Το πεδίο με τύπο .newPassword εκκινεί τη δημιουργία ασφαλούς κωδικού μέσω iCloud Keychain κατά την πρώτη εισαγωγή.
Από το iOS 17, η Apple πρόσθεσε το .oneTimeCode για κωδικούς επιβεβαίωσης SMS και το .shipmentTrackingNumber για παρακολούθηση δεμάτων. Ο τύπος .oneTimeCode αναγνωρίζει αυτόματα κωδικούς από μηνύματα και τους προσφέρει στη γραμμή QuickType χωρίς να χρειάζεται να ανοίξετε την εφαρμογή Messages.
| Κατηγορία | Τύποι | iOS |
|---|---|---|
| Ταυτοποίηση | .name, .givenName, .familyName, .nickname | 5+ |
| Επαφές | .emailAddress, .telephoneNumber, .fullStreetAddress | 5+ |
| Λογαριασμοί | .username, .password, .newPassword | 5+ |
| Τοποθεσία | .location, .city, .state, .postalCode | 10+ |
| Δεδομένα καρτών | .creditCardNumber, .creditCardSecurityCode | 12+ |
| Εφάπαξ κωδικοί | .oneTimeCode | 17+ |
Κάθε τύπος αντιπροσωπεύεται από μια σταθερά συμβολοσειράς, αλλά η σύγκριση πρέπει να γίνεται μέσω του τελεστή ==, όχι μέσω 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, αποφεύγοντας την ανάγνωση του περιεχομένου των μηνυμάτων από την εφαρμογή.
Η βασική διαμόρφωση του Text Content Type σε Swift γίνεται μέσω της ιδιότητας textContentType στον κώδικα ή μέσω του Interface Builder. Στον κώδικα, η ανάθεση σταθεράς καταλαμβάνει μία γραμμή, ενώ στο IB ο επιθυμητός τύπος επιλέγεται από την αναπτυσσόμενη λίστα στον επιθεωρητή χαρακτηριστικών.
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"
let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword
Για προγραμματιστική δημιουργία φόρμας σύνδεσης με αυτόματη συμπλήρωση, χρησιμοποιήστε και τα δύο πεδία με διαφορετικά content type. Το σύστημα θα τα συνδέσει αυτόματα ως όνομα χρήστη και κωδικό πρόσβασης. Εάν η εφαρμογή υποστηρίζει βιομετρική σύνδεση, προσθέστε ένα πεδίο με τύπο .username για σωστή αναγνώριση λογαριασμού.
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 ή να υλοποιήσει δική του ανάλυση μηνυμάτων.
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.
Συχνές Ερωτήσεις
UITextContentType καθορίζει τον σημασιολογικό τύπο δεδομένων, ενώ το UIKeyboardType καθορίζει τη διάταξη του πληκτρολογίου. Το content type μπορεί να παρακάμψει το keyboard type για βέλτιστη εισαγωγή.
Την αυτόματη συμπλήρωση ενεργοποιούν οι τύποι .username, .password, .newPassword, .emailAddress, .telephoneNumber και .creditCardNumber. Το σύστημα αντιστοιχίζει αυτούς τους τύπους με δεδομένα από την αλυσίδα κλειδιών.
Ναι, το WKWebView υποστηρίζει Text Content Type για πεδία HTML με χαρακτηριστικό autocomplete. Το iOS αντιστοιχίζει αυτόματα τα χαρακτηριστικά autocomplete με τύπους UITextContentType.
Ναι, το UITextView κληρονομεί επίσης το UITextInputTraits και υποστηρίζει την ιδιότητα textContentType. Αυτό είναι χρήσιμο για πεδία εισαγωγής στοιχείων επικοινωνίας πολλαπλών γραμμών.
Το σύστημα μπορεί να προτείνει λανθασμένα δεδομένα για αυτόματη συμπλήρωση ή να μην προτείνει τίποτα. Για παράδειγμα, ένα πεδίο username με τύπο .emailAddress μπορεί να εισαγάγει email αντί για όνομα χρήστη.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης