如何检测用户是使用input法进行中途input?

如果用户使用汉语拼音等input法在UITextView中input,则在文本视图中已经显示拼音已经显示的状态,但是用户还没有select最终的汉字。 截图将更加清晰:

在这里输入图像说明

我想为用户做一些文本补全,但是只能为真正的input(汉字用户select)而不是中间拼音input。 所以我需要检测这个挂起状态。

终于明白了 像拼音这样的input方法称为Multistage Text Input 。 第一阶段叫Marked ,第二阶段叫做Committed 。 要确定它是否处于Marked阶段,应该查询UITextInput协议的markedTextRange属性:

 if (textView.markedTextRange != nil) { // Marked. }