如果用户使用输入法(例如中文拼音)在UITextView中输入,则存在拼音已经在文本视图中显示但是用户仍然没有选择最终中文字符的状态。屏幕截图会更清晰:
我想为用户做一些文本完成,但只应该为真实输入(用户选择的中文字符)而不是中间拼音输入。所以我需要检测这个待处理状态。
答案 0 :(得分:30)
终于明白了。拼音等输入法称为Multistage Text Input
。第一阶段称为Marked
,第二阶段称为Committed
。要确定它是否在Marked
阶段,应该查询UITextInput
协议的markedTextRange
属性:
if (textView.markedTextRange != nil) {
// Marked.
}