如何检测用户是使用input法进行中途input?
如果用户使用汉语拼音等input法在UITextView中input,则在文本视图中已经显示拼音已经显示的状态,但是用户还没有select最终的汉字。 截图将更加清晰:
我想为用户做一些文本补全,但是只能为真正的input(汉字用户select)而不是中间拼音input。 所以我需要检测这个挂起状态。
终于明白了 像拼音这样的input方法称为Multistage Text Input
。 第一阶段叫Marked
,第二阶段叫做Committed
。 要确定它是否处于Marked
阶段,应该查询UITextInput
协议的markedTextRange
属性:
if (textView.markedTextRange != nil) { // Marked. }