UITextInput: selectedTextRange против помеченного TextRange?
Хорошо, я знаю Apple UITextInput
Протокол требует двух UITextRange
свойства selectedTextRange
а также markedTextRange
и документация говорит, что selectedTextRange
это поддиапазон markedTextRange
который является неподтвержденным диапазоном текста пользователем yatta yatta. Это все еще не проясняет некоторые вещи относительно того, как я должен реализовать два текстовых диапазона по-разному. Может ли кто-нибудь визуально объяснить мне разницу между selectedTextRange
а также markedTextRange
? Я знаю, что когда length
из selectedTextRange
является 0
это указывает на мигающую карету в selectedTextRange
"s location
, Но какого чёрта это "помеченный текст"?? Я только видел следующее для текстовых представлений в iOS:
selectedTextRange code>
Который я предполагаю, представляет текущий selectedTextRange
, Что значит markedTextRange
выглядит как? Или это в основном одно и то же? Я так растерялся:(Заранее спасибо за любую помощь! Документация оказалась бесполезной в моем понимании того, как реализовать UITextInput
протокол.
РЕДАКТИРОВАТЬ
Осуществляет ли markedTextRange
иметь какое-либо отношение к тому факту, что некоторый текст в представлении может быть "заметным", но "только для чтения" и selectedTextRange
указывает поддиапазон в "отмеченном тексте", markedTextRange
то есть readwrite?
1 ответ
Из документации Apple для UITextInput
:
Помеченный текст, который является частью многоэтапного ввода текста, представляет собой предварительно вставленный текст, который пользователь еще не подтвердил. Он оформлен в особом стиле. Диапазон выделенного текста всегда содержит диапазон выделенного текста, который может быть диапазоном символов или кареткой.
следовательно markedTextRange
становится полезным с языками, которые требуют многоступенчатого ввода, например, японский. Простыми словами: какие пользовательские типы еще предстоит подтвердить, прежде чем они могут быть добавлены к значению элемента управления вводом текста, были markedTextRange
попадает в игру. GIF ниже демонстрирует markedTextRange
В бою:
Обратите внимание на небольшой сапфировый фон за неподтвержденными иероглифами. Как только текст подтверждается нажатием клавиши ввода / возврата, выбора опции из предложений или касанием пальцем области текста после добавления отмеченного текста к значению элемента управления вводом и удаления фона.
Заметки:
- Помеченный TextRange не имеет ничего общего с текстом только для чтения
- Мне не удалось добиться выбора нескольких символов в отмеченном текстовом поле