Autocorrection είναι ένας ενσωματωμένος μηχανισμός του iOS που διορθώνει αυτόματα ορθογραφικά λάθη κατά την εισαγωγή κειμένου. Το UIKit διαχειρίζεται τη συμπεριφορά της αυτόματης διόρθωσης μέσω της ιδιότητας autocorrectionType στο πρωτόκολλο UITextInputTraits, υποστηρίζοντας τρεις λειτουργίες: προεπιλεγμένη, ενεργοποιημένη και απενεργοποιημένη. Σύμφωνα με το Apple Text Programming Guide (2025), η αυτόματη διόρθωση αναλύει το εισαγόμενο κείμενο βάσει του συστήματος λεξικού και μηχανικής μάθησης στη συσκευή. Χρησιμοποιήστε το autocorrectionType για κάθε πεδίο κειμένου ξεχωριστά — αυτό επιτρέπει την προσαρμογή της συμπεριφοράς στις ιδιαιτερότητες των εισαγόμενων δεδομένων.
Κύρια σημεία
Autocorrection (αυτόματη διόρθωση) είναι μια λειτουργία του λειτουργικού συστήματος iOS που αντικαθιστά αυτόματα τις εισαγόμενες λέξεις με πιθανά σωστές παραλλαγές όταν εντοπίζεται ορθογραφικό λάθος. Ο μηχανισμός λειτουργεί σε επίπεδο πεδίων κειμένου UIKit και είναι διαθέσιμος σε όλες τις εφαρμογές που χρησιμοποιούν τα τυπικά στοιχεία εισόδου UITextField και UITextView.
Στη βάση της αυτόματης διόρθωσης βρίσκεται ένα γλωσσικό μοντέλο εκπαιδευμένο σε εκατομμύρια παραδείγματα κειμένου για κάθε υποστηριζόμενη γλώσσα. Το μοντέλο λειτουργεί εξ ολοκλήρου στη συσκευή (on-device), γεγονός που εγγυάται την εμπιστευτικότητα των εισαγόμενων δεδομένων — το κείμενο δεν αποστέλλεται σε διακομιστές της Apple για ανάλυση. Με κάθε ενημέρωση iOS, το μοντέλο βελτιώνεται και επεκτείνεται με νέες λέξεις και κανόνες.
Η αυτόματη διόρθωση ενεργοποιείται αυτόματα για όλα τα πεδία κειμένου, εκτός εάν ο προγραμματιστής την έχει απενεργοποιήσει ρητά. Ο χρήστης μπορεί να απενεργοποιήσει πλήρως την αυτόματη διόρθωση στις ρυθμίσεις συστήματος (Ρυθμίσεις > Γενικά > Πληκτρολόγιο > Αυτόματη διόρθωση), αλλά ο προγραμματιστής μπορεί επίσης να διαχειριστεί αυτή τη συμπεριφορά για μεμονωμένα πεδία μέσω της ιδιότητας autocorrectionType.
Σύμφωνα με το WWDC 2023 Session 204, η Apple παρουσίασε ένα βελτιωμένο γλωσσικό μοντέλο αυτόματης διόρθωσης βασισμένο στο Transformer, το οποίο λαμβάνει υπόψη το πλαίσιο ολόκληρης της πρότασης, όχι μόνο την τελευταία λέξη. Αυτό επέτρεψε τη μείωση των ψευδών διορθώσεων κατά 30% σε σύγκριση με το προηγούμενο μοντέλο που βασιζόταν σε n-gram.
UITextAutocorrectionType είναι μια απαρίθμηση με τρεις τιμές που καθορίζουν τη συμπεριφορά της αυτόματης διόρθωσης για ένα συγκεκριμένο πεδίο κειμένου. Κάθε τιμή ορίζεται μέσω της ιδιότητας autocorrectionType, διαθέσιμης στο Interface Builder και στον κώδικα κατά τη δημιουργία του πεδίου.
Η τιμή .default σημαίνει ότι το πεδίο κληρονομεί την καθολική ρύθμιση αυτόματης διόρθωσης από τις παραμέτρους συστήματος του πληκτρολογίου. Αυτή η λειτουργία συνιστάται για τα περισσότερα πεδία κειμένου, καθώς σέβεται την επιλογή του χρήστη. Εάν ο χρήστης έχει απενεργοποιήσει την αυτόματη διόρθωση στις ρυθμίσεις, το πεδίο με .default δεν θα τη χρησιμοποιήσει επίσης.
Η τιμή .yes ενεργοποιεί αναγκαστικά την αυτόματη διόρθωση για το πεδίο ανεξάρτητα από τη ρύθμιση συστήματος. Αυτή η λειτουργία πρέπει να χρησιμοποιείται μόνο για πεδία όπου η ορθογραφική ακρίβεια είναι κρίσιμη — για παράδειγμα, σε επεξεργαστές κειμένου, πεδία σημειώσεων ή μηνυμάτων. Η Apple συνιστά προσοχή στη χρήση του .yes, καθώς η αναγκαστική ενεργοποίηση μπορεί να έρχεται σε αντίθεση με τις προσδοκίες του χρήστη.
Η τιμή .no απενεργοποιεί την αυτόματη διόρθωση για ένα συγκεκριμένο πεδίο. Αυτή η λειτουργία είναι υποχρεωτική για πεδία κωδικών πρόσβασης (secure text entry), διευθύνσεις email, κωδικούς επιβεβαίωσης και ερωτήματα αναζήτησης. Σε αυτά τα πεδία, η αυτόματη διόρθωση δεν είναι μόνο άχρηστη, αλλά και επιβλαβής — μπορεί να αντικαταστήσει σωστά εισαγόμενα δεδομένα με λανθασμένα.
| Λειτουργία | Τιμή | Σύσταση |
|---|---|---|
| .default | Κληρονομεί τη ρύθμιση συστήματος | Περισσότερα πεδία εισόδου |
| .yes | Αναγκαστικά ενεργοποιημένη | Επεξεργαστές κειμένου, σημειώσεις |
| .no | Αναγκαστικά απενεργοποιημένη | Κωδικοί, email, αναζήτηση, κωδικοί |
Το γλωσσικό μοντέλο αυτόματης διόρθωσης του iOS χρησιμοποιεί συνδυασμό στατικού λεξικού και δυναμικά εκπαιδευόμενου μοντέλου. Το λεξικό συστήματος περιέχει τις πιο συχνά χρησιμοποιούμενες λέξεις για κάθε γλώσσα, και το γλωσσικό μοντέλο βασισμένο στο Transformer αναλύει το πλαίσιο και την πιθανότητα αντικατάστασης. Το μοντέλο εκπαιδεύεται στη συσκευή βάσει των κειμένων που εισάγει ο χρήστης.
Ο χρήστης μπορεί να προσθέτει λέξεις στο προσωπικό λεξικό μέσω των ρυθμίσεων πληκτρολογίου (Ρυθμίσεις > Γενικά > Πληκτρολόγιο > Αντικατάσταση κειμένου). Οι προστιθέμενες λέξεις αποθηκεύονται στο iCloud και συγχρονίζονται μεταξύ συσκευών μέσω του ίδιου Apple ID. Το σύστημα δεν θα διορθώνει λέξεις από το προσωπικό λεξικό, κάτι που είναι βολικό για ονόματα, επωνυμίες και τεχνικούς όρους.
Για συγκεκριμένους τομείς — ιατρικούς, νομικούς, τεχνικούς — το τυπικό λεξικό μπορεί να μην περιέχει αρκετούς όρους. Σε τέτοιες εφαρμογές, συνιστάται είτε να απενεργοποιήσετε την αυτόματη διόρθωση για τα σχετικά πεδία είτε να χρησιμοποιήσετε προσαρμοσμένη αντικατάσταση κειμένου μέσω της μεθόδου UIResponder .replacementDictionary για iOS 17+.
Σύμφωνα με το Apple Machine Learning Research (2024), το νέο μοντέλο αυτόματης διόρθωσης βασισμένο στην αρχιτεκτονική Transformer επεξεργάζεται έως 10 token πλαισίου (έναντι 3 token στο προηγούμενο μοντέλο), επιτρέποντας ακριβέστερο προσδιορισμό της πρόθεσης του χρήστη. Το μοντέλο λαμβάνει υπόψη όχι μόνο την ορθογραφία, αλλά και τη γραμματική δομή της πρότασης.
Safe Keyboard είναι μια ασφαλής λειτουργία εισόδου που ενεργοποιείται αυτόματα για πεδία με secureTextEntry = true. Σε αυτή τη λειτουργία, η αυτόματη διόρθωση, η αυτόματη κεφαλαιοποίηση και η προγνωστική είσοδος απενεργοποιούνται από το σύστημα ανεξάρτητα από τις ορισμένες τιμές autocorrectionType. Το σύστημα επίσης αποκλείει την πρόσβαση στο προσωπικό λεξικό και στις αντικαταστάσεις κειμένου.
Το Safe Keyboard αποτρέπει τη διαρροή εισαγόμενων δεδομένων μέσω μηχανισμών αυτόματης διόρθωσης. Εάν η αυτόματη διόρθωση ήταν ενεργή για ένα πεδίο κωδικού πρόσβασης, το σύστημα θα μπορούσε να αποθηκεύσει τον εισαγόμενο κωδικό στο προσωπικό λεξικό ή να τον στείλει σε διακομιστές της Apple για εκπαίδευση μοντέλου. Το Safe Keyboard εγγυάται ότι τα εμπιστευτικά δεδομένα δεν εγκαταλείπουν τα όρια της εφαρμογής.
Για χρηματοοικονομικές εφαρμογές, το Safe Keyboard ενεργοποιείται αυτόματα μόνο για πεδία με secureTextEntry. Για πεδία αριθμών καρτών, ημερομηνιών λήξης και κωδικών CVV, ο προγραμματιστής πρέπει να απενεργοποιήσει χειροκίνητα την αυτόματη διόρθωση ορίζοντας autocorrectionType = .no και keyboardType = .numberPad ή .phonePad.
Από το iOS 17, το Safe Keyboard υποστηρίζει προστασία από υποκλοπή μέσω πληκτρολογίων τρίτων. Εάν ο χρήστης έχει εγκαταστήσει πληκτρολόγιο από το App Store, κατά την ενεργοποίηση του secureTextEntry, το πληκτρολόγιο συστήματος αντικαθιστά αυτόματα το πληκτρολόγιο τρίτου, ακόμα κι αν ήταν επιλεγμένο ως προεπιλεγμένο. Αυτό εγγυάται ότι οι κωδικοί πρόσβασης εισάγονται μόνο μέσω του ασφαλούς πληκτρολογίου συστήματος.
Η διαχείριση της αυτόματης διόρθωσης στο Swift γίνεται μέσω της ιδιότητας autocorrectionType των αντικειμένων UITextField και UITextView. Η ιδιότητα είναι διαθέσιμη τόσο για ανάγνωση όσο και για εγγραφή και μπορεί να αλλάξει δυναμικά ανάλογα με το πλαίσιο εισόδου. Η ρύθμιση μέσω του Interface Builder είναι διαθέσιμη στον επιθεωρητή χαρακτηριστικών με το όνομα Correction.
let textField = UITextField()
textField.autocorrectionType = .no
Για φόρμα σύνδεσης, η αυτόματη διόρθωση πρέπει να απενεργοποιηθεί για το πεδίο κωδικού πρόσβασης και να παραμείνει προεπιλεγμένα ενεργή για το πεδίο σύνδεσης. Το πεδίο email συνιστάται επίσης να παραμείνει χωρίς αυτόματη διόρθωση, καθώς το σύμβολο @ και τα ονόματα τομέα συχνά αντικαθίστανται λανθασμένα. Για το πεδίο username, η αυτόματη διόρθωση μπορεί να είναι ενεργή εάν το username είναι μια αναγνώσιμη λέξη.
class RegistrationViewController: UIViewController {
@IBOutlet var nameField: UITextField!
@IBOutlet var emailField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
nameField.autocorrectionType = .yes
emailField.autocorrectionType = .no
emailField.textContentType = .emailAddress
}
}
Για UITextView η ρύθμιση της αυτόματης διόρθωσης γίνεται παρόμοια. Αυτό είναι ιδιαίτερα σημαντικό για πολυγραμμικά πεδία σχολίων, μηνυμάτων και σημειώσεων, όπου η αυτόματη διόρθωση προσφέρει το μεγαλύτερο όφελος, αλλά μπορεί επίσης να προκαλέσει ταλαιπωρία κατά την εισαγωγή τεχνικών όρων ή κώδικα.
let textView = UITextView()
textView.autocorrectionType = .default
Για δυναμική αλλαγή της αυτόματης διόρθωσης, χρησιμοποιήστε τον εκπρόσωπο UITextFieldDelegate. Η μέθοδος textFieldDidBeginEditing καλείται κατά την ενεργοποίηση του πεδίου και σε αυτήν μπορείτε να αλλάξετε το autocorrectionType ανάλογα με το τρέχον πλαίσιο ή τον ρόλο του πεδίου, ο οποίος μπορεί να αλλάξει κατά τη λειτουργία της εφαρμογής.
Η αυτόματη διόρθωση πρέπει να απενεργοποιείται σε πεδία όπου η ακρίβεια των εισαγόμενων δεδομένων είναι κρίσιμη και το σύστημα δεν μπορεί να προσδιορίσει σωστά την πρόθεση του χρήστη. Κύριες περιπτώσεις: πεδία κωδικών πρόσβασης και ασφαλών δεδομένων, πεδία διευθύνσεων email, γραμμές αναζήτησης, πεδία εισαγωγής κώδικα και κώδικα προγραμματισμού, καθώς και πεδία με μη τυπικές μορφές δεδομένων.
Για γραμμές αναζήτησης (UISearchBar) η αυτόματη διόρθωση είναι απενεργοποιημένη από προεπιλογή, κάτι που ανταποκρίνεται στις προσδοκίες των χρηστών. Κατά την αναζήτηση, ο χρήστης μπορεί να εισάγει ελλιπείς λέξεις, τεχνικούς όρους ή ερωτήματα σε διαφορετικές γλώσσες, και η αυτόματη διόρθωση θα ήταν μόνο εμπόδιο. Παρόμοια για πεδία εισαγωγής URL και ονομάτων τομέα.
Σε εφαρμογές ανταλλαγής μηνυμάτων και επικοινωνίας, η αυτόματη διόρθωση είναι συνήθως ενεργή, αλλά κατά την εισαγωγή αργκό, συντομογραφιών και ανεπίσημου λεξιλογίου μπορεί να προκαλεί ταλαιπωρία. Σε τέτοιες περιπτώσεις, ο χρήστης μπορεί να απενεργοποιήσει την αυτόματη διόρθωση μέσω των ρυθμίσεων πληκτρολογίου ή ο προγραμματιστής μπορεί να παρέχει έναν διακόπτη απευθείας στη διεπαφή της εφαρμογής.
Σύμφωνα με τις Οδηγίες Ανθρώπινης Διεπαφής της Apple, η αυτόματη διόρθωση πρέπει να απενεργοποιείται για οποιοδήποτε πεδίο όπου τα εισαγόμενα δεδομένα ενδέχεται να μην βρίσκονται στο λεξικό συστήματος: αριθμοί παραγγελιών, κωδικοί κράτησης, αναγνωριστικά, IMEI, διευθύνσεις MAC. Εάν το πεδίο δέχεται αλφαριθμητικά δεδομένα σε μη τυπική μορφή — απενεργοποιήστε την αυτόματη διόρθωση.
Συχνές ερωτήσεις
Δεν υπάρχει καθολική απενεργοποίηση της αυτόματης διόρθωσης για μια εφαρμογή. Πρέπει να ορίσετε autocorrectionType = .no για κάθε πεδίο κειμένου ξεχωριστά ή να δημιουργήσετε μια υποκλάση UITextField με παρακαμφθείσα τιμή.
Ο προσομοιωτής χρησιμοποιεί ένα απλοποιημένο μοντέλο εισόδου από το πληκτρολόγιο Mac. Το γλωσσικό μοντέλο αυτόματης διόρθωσης δεν είναι ενεργό στον προσομοιωτή — για δοκιμή χρησιμοποιήστε πραγματική συσκευή.
Ο χρήστης μπορεί να προσθέσει μια λέξη μέσω Ρυθμίσεις > Γενικά > Πληκτρολόγιο > Αντικατάσταση κειμένου. Δεν υπάρχει API για εφαρμογές για προγραμματισμένη προσθήκη λέξεων στο λεξικό συστήματος αυτόματης διόρθωσης.
Όχι, το keyboardType δεν επηρεάζει την αυτόματη διόρθωση. Ακόμα και για το πληκτρολόγιο .numberPad, η αυτόματη διόρθωση μπορεί να είναι ενεργή, εάν δεν έχει απενεργοποιηθεί ρητά μέσω autocorrectionType.
Τα πληκτρολόγια τρίτων έχουν τους δικούς τους μηχανισμούς αυτόματης διόρθωσης και δεν χρησιμοποιούν το σύστημα UITextAutocorrectionType. Η συμπεριφορά εξαρτάται από την υλοποίηση του συγκεκριμένου πληκτρολογίου.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης