2013-05-02 1 views
5

Я реализую пользовательский вид ввода текста, который принимает протокол UITextInput, при использовании UITextView, дважды коснитесь слова, сделайте слово выбранным, интересно, как UITextInput использовать его токенизатор для tokenize строки, теперь я не видел никаких разница с назначением токенизатора или без него для UITextInput путем перезаписывания метода [UITextInput -tokenizer].Tokenizer UITextInput, для чего он используется?

ответ

1

Используется для таких вещей, как клавиатура (при подключенной аппаратной клавиатуре). Например, перемещаясь между словами, удерживая Option и используя клавиши со стрелками, начинайте/завершайте линию.

Из текста Руководства по программированию от Apple для прошивкой:

Tokenizers являются объектами, которые определяют, является ли положение текста внутри или на границе текстового блока с заданной степенью детализации. При запросе системой ввода текста токенизатор возвращает диапазоны текстовых единиц с заданной детализацией или положением границы текста для текстового блока с заданной детализацией. В настоящее время определены гранулярности - символ, слово, предложение, абзац, строка и документ; enum Константы типа UITextGranularity представляют эти гранулярности. Гранулярность текстовых блоков всегда оценивается со ссылкой на руководство по хранению или макету .

Система ввода текста использует токенизатор различными способами. Например, для примера клавиатуре может потребоваться контекст последнего предложения , чтобы выяснить, что пользователь пытается ввести. Или, если пользователь нажимает клавишу со стрелкой Option-Left (на внешней клавиатуре), текстовая система запрашивает токенизатор, чтобы найти нужную ему информацию, чтобы она переместилась к предыдущему слову.

Подробнее: https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/LowerLevelText-HandlingTechnologies/LowerLevelText-HandlingTechnologies.html