好的,所以我知道 Apple 的 UITextInput 协议(protocol)需要两个 UITextRange 属性 selectedTextRangemarkedTextRange 并且文档说 selectedTextRangemarkedTextRange 的子范围,这是用户 yatta yatta 未确认的文本范围。对于我应该如何不同地实现这两个文本范围,这仍然使我不清楚。有人可以直观地向我解释 selectedTextRangemarkedTextRange 之间的区别吗?我知道当 lengthselectedTextRange0 时,它​​表示 selectedTextRangelocation 处有一个闪烁的插入符号。但是“标记文本”到底是什么呢??我只在 iOS 中看到了以下文本 View :

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

编辑

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

最佳答案

来自 UITextInput 的 Apple 文档:



因此 markedTextRange 对于需要多级输入的语言非常有用,例如日本人。
简单来说:用户输入的内容还有待确认,然后才能添加到文本输入控件的值中,是 markedTextRange 进入游戏。下面的 GIF 演示了 markedTextRange 的作用:

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

注释:

  • 标记的TextRange 与只读文本无关
  • 我无法在标记文本范围内实现多个符号选择
  • 关于ios - UITextInput:selectedTextRange vs.markedTextRange?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24632708/

    10-10 17:03