Как определить, что пользователь находится на полпути ввода с помощью метода ввода?

Если пользователь вводит в UITextView с помощью метода ввода, такого как китайский пиньинь, существует состояние, когда пиньинь уже отображается в текстовом представлении, но пользователю еще предстоит выбрать окончательные китайские символы. Скриншот будет намного понятнее:

введите здесь описание изображения

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


person an0    schedule 01.10.2012    source источник


Ответы (1)


Наконец-то понял. Методы ввода, такие как пиньинь, называются Multistage Text Input. Первый этап называется Marked, второй этап называется Committed. Чтобы определить, находится ли он на стадии Marked, нужно запросить свойство markedTextRange протокола UITextInput:

if (textView.markedTextRange != nil) {
    // Marked.
}
person an0    schedule 19.11.2012
comment
Привет, ты знал, где определить, когда есть даже введенный символ? Я пробовал textViewDidChange от UITextViewDelegate, UIControlEventEditingChanged от NSNotificationCenter и разные другие вещи, все безрезультатно.. - person Hakim Hauston; 18.11.2017