Я реализую пользовательский вид ввода текста, который принимает протокол UITextInput
, при использовании UITextView
, дважды коснитесь слова, сделайте слово выбранным, интересно, как UITextInput
использовать его токенизатор для tokenize строки, теперь я не видел никаких разница с назначением токенизатора или без него для UITextInput путем перезаписывания метода [UITextInput -tokenizer]
.Tokenizer UITextInput, для чего он используется?
ответ
Используется для таких вещей, как клавиатура (при подключенной аппаратной клавиатуре). Например, перемещаясь между словами, удерживая Option и используя клавиши со стрелками, начинайте/завершайте линию.
Из текста Руководства по программированию от Apple для прошивкой:
Tokenizers являются объектами, которые определяют, является ли положение текста внутри или на границе текстового блока с заданной степенью детализации. При запросе системой ввода текста токенизатор возвращает диапазоны текстовых единиц с заданной детализацией или положением границы текста для текстового блока с заданной детализацией. В настоящее время определены гранулярности - символ, слово, предложение, абзац, строка и документ; enum Константы типа UITextGranularity представляют эти гранулярности. Гранулярность текстовых блоков всегда оценивается со ссылкой на руководство по хранению или макету .
Система ввода текста использует токенизатор различными способами. Например, для примера клавиатуре может потребоваться контекст последнего предложения , чтобы выяснить, что пользователь пытается ввести. Или, если пользователь нажимает клавишу со стрелкой Option-Left (на внешней клавиатуре), текстовая система запрашивает токенизатор, чтобы найти нужную ему информацию, чтобы она переместилась к предыдущему слову.