Ios UITExtrange:选择的extrange与标记的extrange?

Ios UITExtrange:选择的extrange与标记的extrange?,ios,objective-c,protocols,uitextinput,uitextrange,Ios,Objective C,Protocols,Uitextinput,Uitextrange,好的,我知道苹果的uitedrange协议需要两个uitedrange属性selectedtemrange和markedtemrange,文档说selectedtemrange是markedtemrange的子范围,这是用户yatta yatta未确认的文本范围。关于如何以不同的方式实现这两个文本范围,我仍然没有弄清楚一些事情。有人能直观地向我解释一下selectedtemtrange和markedtemtrange之间的区别吗?我知道当selectedtemtrange的长度为0时,它表示在s

好的,我知道苹果的
uitedrange
协议需要两个
uitedrange
属性
selectedtemrange
markedtemrange
,文档说
selectedtemrange
markedtemrange
的子范围,这是用户yatta yatta未确认的文本范围。关于如何以不同的方式实现这两个文本范围,我仍然没有弄清楚一些事情。有人能直观地向我解释一下
selectedtemtrange
markedtemtrange
之间的区别吗?我知道当
selectedtemtrange
长度
0
时,它表示在
selectedtemtrange
位置有一个闪烁的插入符号。但“标记文本”到底是什么??我在iOS中只看到了以下文本视图:

已选择扩展项
“>

我假设它代表当前的
selectedTextRange
markedTextRange
是什么样子的?或者它基本上是一样的吗?我很困惑:(提前感谢您的帮助!文档证明了它对我理解如何实现
UITExtrange
协议毫无用处

编辑


实现
markedextrange
是否与视图中的某些文本可能是“可标记的”,但却是“只读的”和
selectedextrange
表示“已标记文本”中的子范围,即readwrite有任何关系?

来自苹果文档中的
uitedextrange

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

因此,
markedTextRange
对于需要多级输入的语言非常有用,例如日语。 简单地说:在将用户类型添加到文本输入控件的值之前,哪些用户类型尚待确认是WARE
markedTextRange
进入游戏。下面的GIF演示了
markedTextRange

请注意未经确认的象形文字后面有轻微的蓝宝石背景。一旦文本被确认,在标记的文本添加到输入控制值并删除背景后,点击回车、从建议中选择选项或用手指点击文本区域

注意事项:

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

您能建议如何正确限制最大文本输入长度吗?例如,如果我将输入限制为3个字符并尝试输入“ででで当我按下键盘按钮“dedede”(每个“de”转换为で)然后我无法输入最后一个字符,因为我的验证函数认为这是4个字符。下面是我的验证函数:
-(BOOL)textField:(UITextField*)tf shouldChangeCharactersRange:(NSRange)r replacementString:(NSString*)s{返回[tf.text stringbyreplacingcharactersRange:r with string:s]长度,我的意思是,我仍然可以使用完成<代码>弹出< /代码>粘贴到键盘的顶部,但这似乎是一种解决办法……还是我忽略了这个?……@ IGREK考虑总是返回true,在代码< > TeXField.MauldTdExange!= nIL< /Cord>