Autocorrection — същност, механизми и UITextAutocorrectionType

Автор: IT Sectr Публикувано: 2026-07-08 Време за четене: 7 мин

Autocorrection е вграден механизъм в iOS, който автоматично коригира правописни грешки при въвеждане на текст. UIKit управлява поведението на автоматичната корекция чрез свойството autocorrectionType в протокола UITextInputTraits, поддържайки три режима: по подразбиране, включен и изключен. Според Apple Text Programming Guide (2025), автоматичната корекция анализира въведения текст на базата на системния речник и машинно обучение на устройството. Използвайте autocorrectionType за всяко текстово поле отделно — това позволява адаптиране на поведението към спецификата на въвежданите данни.

Основни точки

  • Autocorrection — системен механизъм на iOS за автоматично коригиране на правописни грешки при писане
  • UITextAutocorrectionType поддържа три режима: .default, .yes и .no за всяко поле индивидуално
  • Речникът на автоматичната корекция се изгражда на базата на системния речник на iOS и езиков модел, обучен на устройството
  • Safe Keyboard — защитена клавиатура, изключваща автоматичната корекция за полета с пароли и финансови данни
  • Локализация — автоматичната корекция работи за всички поддържани езици на клавиатурата, включително допълнителни подредби

Какво е Autocorrection?

Autocorrection (автоматична корекция) е функция на операционната система iOS, която автоматично замества въведените думи с вероятно правилни варианти при откриване на правописна грешка. Механизмът работи на ниво текстови полета на UIKit и е достъпен във всички приложения, използващи стандартните входни елементи UITextField и UITextView.

В основата на автоматичната корекция стои езиков модел, обучен върху милиони текстови примери за всеки поддържан език. Моделът работи изцяло на устройството (on-device), което гарантира поверителност на въвежданите данни — текстът не се изпраща до сървърите на Apple за анализ. С всяка актуализация на iOS моделът се прецизира и разширява с нови думи и правила.

Автоматичната корекция се активира автоматично за всички текстови полета, освен ако разработчикът изрично не я е изключил. Потребителят може напълно да изключи автоматичната корекция в системните настройки (Настройки > Основни > Клавиатура > Автоматична корекция), но разработчикът също може да управлява това поведение за отделни полета чрез свойството autocorrectionType.

Според WWDC 2023 Session 204, Apple представи подобрен езиков модел за автоматична корекция, базиран на Transformer, който взема предвид контекста на цялото изречение, а не само последната дума. Това позволи намаляване на фалшивите корекции с 30% в сравнение с предишния модел, базиран на n-gram.

Режими на автоматична корекция в iOS

UITextAutocorrectionType е изброяване с три стойности, определящи поведението на автоматичната корекция за конкретно текстово поле. Всяка стойност се задава чрез свойството autocorrectionType, достъпно в Interface Builder и в кода при създаване на полето.

Режим .default

Стойността .default означава, че полето наследява глобалната настройка за автоматична корекция от системните параметри на клавиатурата. Този режим се препоръчва за повечето текстови полета, тъй като зачита избора на потребителя. Ако потребителят е изключил автоматичната корекция в настройките, полето с .default също няма да я използва.

Режим .yes

Стойността .yes принудително включва автоматичната корекция за полето независимо от системната настройка. Този режим трябва да се използва само за полета, където правописната точност е критична — например в текстови редактори, полета за бележки или съобщения. Apple препоръчва внимателно прилагане на .yes, тъй като принудителното включване може да противоречи на очакванията на потребителя.

Режим .no

Стойността .no изключва автоматичната корекция за конкретно поле. Този режим е задължителен за полета с пароли (secure text entry), имейл адреси, кодове за потвърждение и заявки за търсене. В тези полета автоматичната корекция е не само безполезна, но и вредна — може да замени правилно въведените данни с грешни.

РежимСтойностПрепоръка
.defaultНаследява системната настройкаПовечето входни полета
.yesПринудително включенаТекстови редактори, бележки
.noПринудително изключенаПароли, имейл, търсене, кодове

Езиков модел и речник

Езиковият модел на автоматичната корекция в iOS използва комбинация от статичен речник и динамично обучаем модел. Системният речник съдържа най-често използваните думи за всеки език, а езиковият модел, базиран на Transformer, анализира контекста и вероятността за замяна. Моделът се обучава на устройството на базата на текстове, въведени от потребителя.

Потребителят може да добавя думи в личния речник чрез настройките на клавиатурата (Настройки > Основни > Клавиатура > Замяна на текст). Добавените думи се съхраняват в iCloud и се синхронизират между устройства чрез същия Apple ID. Системата няма да коригира думи от личния речник, което е удобно за имена, марки и технически термини.

За специфични домейни — медицински, правни, технически — стандартният речник може да не съдържа достатъчно термини. В такива приложения се препоръчва или изключване на автоматичната корекция за съответните полета, или използване на персонализирана замяна на текст чрез метода на UIResponder .replacementDictionary за iOS 17+.

Според Apple Machine Learning Research (2024), новият модел за автоматична корекция, базиран на архитектурата Transformer, обработва до 10 токена контекст (срещу 3 токена в предишния модел), което позволява по-точно определяне на намерението на потребителя. Моделът взема предвид не само правописа, но и граматичната структура на изречението.

Safe Keyboard и поверителни данни

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 код

Управлението на автоматичната корекция в Swift се осъществява чрез свойството autocorrectionType на обектите UITextField и UITextView. Свойството е достъпно както за четене, така и за запис и може да се променя динамично в зависимост от контекста на въвеждане. Настройката чрез Interface Builder е достъпна в инспектора на атрибути под името Correction.

swift
let textField = UITextField()
textField.autocorrectionType = .no

За форма за вход автоматичната корекция трябва да се изключи за полето с парола и да се остави по подразбиране за полето за вход. Имейл полето също се препоръчва да остане без автоматична корекция, тъй като символът @ и имената на домейни често се заменят неправилно. За полето за потребителско име автоматичната корекция може да бъде включена, ако потребителското име е четлива дума.

swift
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 настройката на автоматичната корекция се извършва по подобен начин. Това е особено важно за многоредови полета за коментари, съобщения и бележки, където автоматичната корекция носи най-голяма полза, но може също да създава неудобства при въвеждане на технически термини или код.

swift
let textView = UITextView()
textView.autocorrectionType = .default

За динамична промяна на автоматичната корекция използвайте делегата UITextFieldDelegate. Методът textFieldDidBeginEditing се извиква при активиране на полето и в него може да се промени autocorrectionType в зависимост от текущия контекст или ролята на полето, която може да се променя по време на работа на приложението.

Кога да изключим автоматичната корекция

Автоматичната корекция трябва да се изключва в полета, където точността на въвежданите данни е критична и системата не може правилно да определи намерението на потребителя. Основни случаи: полета за пароли и защитени данни, полета за имейл адреси, ленти за търсене, полета за въвеждане на код и програмен код, както и полета с нестандартни формати на данни.

За ленти за търсене (UISearchBar) автоматичната корекция е изключена по подразбиране, което съответства на очакванията на потребителите. При търсене потребителят може да въвежда непълни думи, технически термини или заявки на различни езици и автоматичната корекция би пречела. Аналогично за полета за въвеждане на URL и имена на домейни.

В месинджъри и приложения за комуникация автоматичната корекция обикновено е включена, но при въвеждане на жаргон, съкращения и неформална лексика може да създава неудобства. В такива случаи потребителят може да изключи автоматичната корекция чрез настройките на клавиатурата или разработчикът може да предостави превключвател директно в интерфейса на приложението.

Според Human Interface Guidelines на Apple, автоматичната корекция трябва да бъде изключена за всяко поле, където въвежданите данни може да не са в системния речник: номера на поръчки, кодове за резервации, идентификатори, IMEI, MAC адреси. Ако полето приема буквено-цифрови данни в нестандартен формат — изключете автоматичната корекция.

Често задавани въпроси

Как напълно да изключа автоматичната корекция в цялото приложение?

Глобално изключване на автоматичната корекция за приложение не съществува. Трябва да зададете autocorrectionType = .no за всяко текстово поле отделно или да създадете подклас на UITextField с презаписана стойност.

Защо автоматичната корекция не работи на симулатора?

Симулаторът използва опростен модел на въвеждане от клавиатурата на Mac. Езиковият модел на автоматичната корекция не е активен в симулатора — за тестване използвайте реално устройство.

Как да добавя дума в личния речник?

Потребителят може да добави дума чрез Настройки > Основни > Клавиатура > Замяна на текст. За приложението няма API за програмно добавяне на думи в системния речник за автоматична корекция.

Изключва ли настройката keyboardType автоматичната корекция?

Не, keyboardType не влияе на автоматичната корекция. Дори за клавиатура .numberPad автоматичната корекция може да е активна, ако не е изрично изключена чрез autocorrectionType.

Работи ли автоматичната корекция за клавиатури на трети страни?

Клавиатурите на трети страни имат собствени механизми за автоматична корекция и не използват системния UITextAutocorrectionType. Поведението зависи от имплементацията на конкретната клавиатура.

Резюме

  • Autocorrection — системна функция на iOS за автоматично коригиране на правописни грешки в текстови полета
  • Три режима UITextAutocorrectionType: .default (наследява настройките), .yes (включена), .no (изключена)
  • Transformer езиков модел обработва до 10 токена контекст и работи изцяло на устройството
  • Safe Keyboard автоматично изключва автоматичната корекция за полета с secureTextEntry = true
  • Автоматичната корекция е безполезна за полета с пароли, имейл, кодове, търсене и нестандартни формати данни
  • Настройката се извършва чрез свойството autocorrectionType за всяко поле индивидуално
  • Препоръка — тествайте поведението на автоматичната корекция на реално устройство с активен езиков модел

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също