8

好的,所以我知道 Apple 的UITextInput协议需要这两个UITextRange属性selectedTextRangemarkedTextRange并且文档说这selectedTextRange是一个子范围,markedTextRange其中的一个子范围是用户 yatta yatta 未确认的文本范围。关于我应该如何以不同的方式实现这两个文本范围,这仍然没有让我清楚一些事情。selectedTextRange有人可以直观地向我解释和之间的区别markedTextRange吗?我知道当lengthof selectedTextRangeis0表示在selectedTextRange's处闪烁插入符号location。但到底什么是“标记文本”?我只在 iOS 中看到以下文本视图:

<code>selectedTextRange</code> 示例

我假设它代表当前的selectedTextRange. markedTextRange看起来像什么?或者它基本上是完全相同的东西?我很困惑 :( 在此先感谢您的帮助!在我对如何实现UITextInput协议的理解中,该文档已证明自己毫无用处。

编辑

实现是否markedTextRange与视图中的某些文本可能是“可标记的”但“只读的”并selectedTextRange指示“标记的文本”中的子范围markedTextRange,即读写的事实有关?

4

1 回答 1

13

来自 Apple 文档UITextInput

标记文本是多级文本输入的一部分,表示用户尚未确认的临时插入文本。它以独特的方式设计。标记文本范围内始终包含选定文本范围,可能是字符范围或插入符号。

因此markedTextRange对于需要多级输入的语言(例如日语)很有用。简而言之:在将其添加到文本输入控件的值之前,尚未确认用户输入的内容是markedTextRange进入游戏。下面的 GIF 演示markedTextRange了实际操作:

在此处输入图像描述

注意未经证实的象形文字背后有轻微的蓝宝石背景。一旦通过按回车键、从建议中选择选项或在将标记的文本添加到输入控件值并删除背景后手指点击文本区域来确认文本。

笔记:

  • markedTextRange 与只读文本无关
  • 我无法在markedTextRange 中实现多个符号选择
于 2014-07-08T22:20:39.883 回答