Проверка текстового написания

Для проверки написания некоторого текста приложение выполняет следующие действия:

Например, Вы могли бы использовать следующее утверждение для создания программы проверки правописания:

range = [[NSSpellChecker sharedSpellChecker] checkSpellingOfString:aString startingAt:0];

checkSpellingOfString:startingAt: метод проверяет написание слов в указанной строке, начинающейся при указанном смещении (этот пример использует 0 для запуска в начале строки), пока это не находит пишущееся c орфографическими ошибками слово. Тогда это возвращает NSRange для указания расположения слова с ошибками.

В графическом приложении, каждый раз, когда слово с ошибками найдено, Вы, вероятно, захотите выделить слово в документе, с помощью NSRange это checkSpellingOfString:startingAt: возвраты для определения текста для выделения. Тогда необходимо показать слово с ошибками в поле слова с ошибками панели Spelling путем вызова updateSpellingPanelWithMisspelledWord:. Если checkSpellingOfString:startingAt: не находит слово с ошибками, необходимо вызвать updateSpellingPanelWithMisspelledWord: с пустой строкой. Это заставляет систему подавать звуковой сигнал, позволяя пользователю знать, что проверка написания завершена, и никакие слова с ошибками не были найдены. Ни один из этих шагов не требуется, но если Вы делаете один, необходимо сделать их всех.

Объект, обеспечивающий проверяемую строку, должен принять следующие протоколы:

Протокол

Описание

NSChangeSpelling

Сообщение в этом протоколе (changeSpelling:) когда пользователь нажимает кнопку Correct, отправляется вниз цепочку респондента.

NSIgnoreMisspelledWords

Когда проверяемый объект реагирует на этот протокол, сервер написания сохраняет список слов, которые приемлемы в документе, и включает кнопку Ignore в панели Spelling.

Приложение может принять решение разделить текст документа на сегменты и проверить их отдельно. Когда текст имеет сегменты на различных языках, это необходимо. Проверка правописания вызывается для одного языка за один раз, таким образом, документ, содержащий части на трех языках, требует по крайней мере трех проверок.

Словари и списки слов

Процесс проверения орфографию использует три ссылки:

Слово считается с орфографической ошибкой, если ни один из этих трех не принимает его.

При соответствии списка проигнорированных слов с документом это принадлежит

NSString быть проверенным не является тем же как документом. В ходе обработки документа приложение могло бы осуществить несколько проверок на основе различных частей или различных версий текста, но они все принадлежат тому же документу. NSSpellChecker сохраняет отдельные “проигнорированные слова” списком для каждого документа, который это проверяет. Помочь распознать “проигнорированные слова” перечисляет к документам, необходимо вызвать uniqueSpellDocumentTag один раз для каждого документа. Этот метод возвращает уникальное произвольное целое число, которое будет служить, чтобы отличить один документ от других проверяемых и соответствовать каждый “проигнорированные слова” список к документу. При поиске слов с ошибками передайте тег как четвертый аргумент checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:. (Удобный метод checkSpellingOfString:startingAt: не берет тега. Когда первый респондент не соответствует протоколу NSIgnoreMisspelledWords, этот метод подходит.)

Когда приложение сохраняет документ, оно может принять решение получить “проигнорированные слова”, перечисляют и сохраняют его вместе с документом. Для возвращения правильного списка это должно отправить NSSpellChecker ignoredWordsInSpellDocumentWithTag: сообщение. Когда приложение закрыло документ, оно должно уведомить NSSpellChecker, что “проигнорированные слова документа” список могут теперь быть отброшены путем отправки ему a closeSpellDocumentWithTag: сообщение. Когда приложение вновь открывает документ, оно должно восстановить “проигнорированные слова” список с сообщением setIgnoredWords:inSpellDocumentWithTag:.