Проверка текстового написания
Для проверки написания некоторого текста приложение выполняет следующие действия:
Включает в его пользовательский интерфейс пункт меню (или кнопка или команда), которым пользователь запросит проверку правописания.
Делает текст, который будет проверен доступный как объект NSString.
Создает экземпляр класса NSSpellChecker и отправляет ему a
checkSpellingOfString:startingAt:сообщение.
Например, Вы могли бы использовать следующее утверждение для создания программы проверки правописания:
range = [[NSSpellChecker sharedSpellChecker] checkSpellingOfString:aString startingAt:0]; |
checkSpellingOfString:startingAt: метод проверяет написание слов в указанной строке, начинающейся при указанном смещении (этот пример использует 0 для запуска в начале строки), пока это не находит пишущееся c орфографическими ошибками слово. Тогда это возвращает NSRange для указания расположения слова с ошибками.
В графическом приложении, каждый раз, когда слово с ошибками найдено, Вы, вероятно, захотите выделить слово в документе, с помощью NSRange это checkSpellingOfString:startingAt: возвраты для определения текста для выделения. Тогда необходимо показать слово с ошибками в поле слова с ошибками панели Spelling путем вызова updateSpellingPanelWithMisspelledWord:. Если checkSpellingOfString:startingAt: не находит слово с ошибками, необходимо вызвать updateSpellingPanelWithMisspelledWord: с пустой строкой. Это заставляет систему подавать звуковой сигнал, позволяя пользователю знать, что проверка написания завершена, и никакие слова с ошибками не были найдены. Ни один из этих шагов не требуется, но если Вы делаете один, необходимо сделать их всех.
Объект, обеспечивающий проверяемую строку, должен принять следующие протоколы:
Приложение может принять решение разделить текст документа на сегменты и проверить их отдельно. Когда текст имеет сегменты на различных языках, это необходимо. Проверка правописания вызывается для одного языка за один раз, таким образом, документ, содержащий части на трех языках, требует по крайней мере трех проверок.
Словари и списки слов
Процесс проверения орфографию использует три ссылки:
Словарь зарегистрировался в службе проверки правописания системы. Когда панель Spelling сначала появляется, по умолчанию она показывает словарь для предпочтительного языка пользователя. Пользователь может выбрать различный словарь из списка в панели Spelling.
Пользователь «изучает» список правильно записанных слов на текущем языке. Когда пользователь нажимает кнопки Learn или Forget в панели Spelling, NSSpellChecker обновляет список.
Список документа слов, которые будут проигнорированы при проверке его (если первый респондент соответствует протоколу NSIgnoreMisspelledWords). Когда пользователь нажимает кнопку Ignore в панели Spelling, NSSpellChecker обновляет свою копию этого списка.
Слово считается с орфографической ошибкой, если ни один из этих трех не принимает его.
При соответствии списка проигнорированных слов с документом это принадлежит
NSString быть проверенным не является тем же как документом. В ходе обработки документа приложение могло бы осуществить несколько проверок на основе различных частей или различных версий текста, но они все принадлежат тому же документу. NSSpellChecker сохраняет отдельные “проигнорированные слова” списком для каждого документа, который это проверяет. Помочь распознать “проигнорированные слова” перечисляет к документам, необходимо вызвать uniqueSpellDocumentTag один раз для каждого документа. Этот метод возвращает уникальное произвольное целое число, которое будет служить, чтобы отличить один документ от других проверяемых и соответствовать каждый “проигнорированные слова” список к документу. При поиске слов с ошибками передайте тег как четвертый аргумент checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:. (Удобный метод checkSpellingOfString:startingAt: не берет тега. Когда первый респондент не соответствует протоколу NSIgnoreMisspelledWords, этот метод подходит.)
Когда приложение сохраняет документ, оно может принять решение получить “проигнорированные слова”, перечисляют и сохраняют его вместе с документом. Для возвращения правильного списка это должно отправить NSSpellChecker ignoredWordsInSpellDocumentWithTag: сообщение. Когда приложение закрыло документ, оно должно уведомить NSSpellChecker, что “проигнорированные слова документа” список могут теперь быть отброшены путем отправки ему a closeSpellDocumentWithTag: сообщение. Когда приложение вновь открывает документ, оно должно восстановить “проигнорированные слова” список с сообщением setIgnoredWords:inSpellDocumentWithTag:.