【发布时间】:2012-09-22 09:37:28
【问题描述】:
如果用户在 UITextView 中使用输入法(例如中文拼音)进行输入,则会出现拼音已显示在文本视图中但用户仍未选择最终汉字的状态。截图会更清晰:
我想为用户做一些文本补全,但应该只为真正的输入(用户选择的汉字)做,而不是为中间的拼音输入做。所以我需要检测这个挂起的状态。
【问题讨论】:
标签: ios uitextview uikeyboard
如果用户在 UITextView 中使用输入法(例如中文拼音)进行输入,则会出现拼音已显示在文本视图中但用户仍未选择最终汉字的状态。截图会更清晰:
我想为用户做一些文本补全,但应该只为真正的输入(用户选择的汉字)做,而不是为中间的拼音输入做。所以我需要检测这个挂起的状态。
【问题讨论】:
标签: ios uitextview uikeyboard
终于明白了。拼音等输入法称为Multistage Text Input。第一阶段称为Marked,第二阶段称为Committed。判断是否处于Marked阶段,需要查询UITextInput协议的markedTextRange属性:
if (textView.markedTextRange != nil) {
// Marked.
}
【讨论】:
UITextViewDelegate的textViewDidChange,NSNotificationCenter的UIControlEventEditingChanged和其他各种东西都无济于事..