UITextInput:selectedTextRange与markedTextRange?

时间:2014-07-08 13:07:53

标签: ios objective-c protocols uitextinput uitextrange

好的,所以我知道Apple的UITextInput协议需要两个UITextRange属性selectedTextRangemarkedTextRange,文档说selectedTextRangemarkedTextRange的子范围{1}}这是用户yatta yatta的未经确认的文本范围。对于我应该如何以不同方式实现两个文本范围,这仍然没有让我明白一些事情。有人可以直观地向我解释selectedTextRangemarkedTextRange之间的区别吗?我知道当length的{​​{1}}为selectedTextRange时,它表示0 selectedTextRange处的符号闪烁。但到底是什么“标记文字”?我在iOS中只看到以下文本视图:

example of <code>selectedTextRange</code>

我假设代表当前的locationselectedTextRange看起来像什么?或者它基本上是完全相同的东西?我很困惑:(提前感谢您的帮助!文档证明了我对如何实现markedTextRange协议的理解无用。

修改

实施UITextInput是否与视图中的某些文字可以“标记”但“只读”并且markedTextRange表示“标记文本”中的子范围selectedTextRange这一事实有关。{{ 1}},那是readwrite?

1 个答案:

答案 0 :(得分:9)

来自UITextInput的Apple文档:

  

标记文本是多级文本输入的一部分,暂时表示   插入的文本,用户尚未确认。它风格独特   办法。标记文本的范围始终包含一系列选定的文本   文本,可能是一系列字符或插入符号。

因此markedTextRange对需要多级输入的语言非常有用,例如日本。 简单来说:在将{I}加入到文本输入控件的值之前,尚未确认的用户类型是markedTextRange进入游戏。 GIF轰鸣声展示markedTextRange在行动:

enter image description here

注意未经证实的象形文字背后的轻微蓝宝石背景。通过点击进入/返回确认文本,从标记文本添加到输入控件值并删除背景后,从建议中选择选项或手指点击文本区域。

备注:

  • markedTextRange与只读文本无关
  • 我无法在markedTextRange
  • 中实现多个符号选择