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), email-адресов, кодов подтверждения и поисковых запросов. В этих полях автокоррекция не только бесполезна, но и вредна — она может заменить корректно введённые данные на ошибочные.

РежимЗначениеРекомендация
.defaultНаследует системную настройкуБольшинство полей ввода
.yesПринудительно включенаРедакторы текста, заметки
.noПринудительно отключенаПароли, email, поиск, коды

Языковая модель и словарь

Языковая модель автокоррекции 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

Для формы входа автокоррекцию следует отключить для поля пароля и включить по умолчанию для поля логина. Поле email также рекомендуется оставить без автокоррекции, так как символ @ и доменные имена часто заменяются неверно. Для поля username автокоррекция может быть включена, если username представляет собой читаемое слово.

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 в зависимости от текущего контекста или роли поля, которая может меняться в процессе работы приложения.

Когда отключать автокоррекцию

Автокоррекцию следует отключать в полях, где точность вводимых данных критична и система не может корректно определить намерение пользователя. Основные случаи: поля паролей и secure-данных, поля ввода email-адресов, поисковые строки, поля ввода кода и программного кода, а также поля с нестандартными форматами данных.

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

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

По данным Apple Human Interface Guidelines, автокоррекция должна быть отключена для любого поля, где вводимые данные могут быть не найдены в системном словаре: номера заказов, коды бронирования, идентификаторы, IMEI, MAC-адреса. Если поле принимает буквенно-цифровые данные в нестандартном формате — отключайте автокоррекцию.

Часто задаваемые вопросы

Как полностью отключить автокоррекцию во всём приложении?

Глобального отключения автокоррекции для приложения не существует. Необходимо установить autocorrectionType = .no для каждого текстового поля отдельно или создать подкласс UITextField с переопределённым значением.

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

Симулятор использует упрощённую модель ввода с клавиатуры Mac. Языковая модель автокоррекции в симуляторе не активна — для тестирования используйте реальное устройство.

Как добавить слово в пользовательский словарь?

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

Отключает ли автокоррекцию установка keyboardType?

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

Работает ли автокоррекция для сторонних клавиатур?

Сторонние клавиатуры имеют собственные механизмы автокоррекции и не используют системный UITextAutocorrectionType. Поведение зависит от реализации конкретной клавиатуры.

Итоги

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

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

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также