UITextInput: selectedTextRange vs. markedTextRange?

妖精的绣舞 提交于 2019-12-06 00:24:00

问题


Ok, so I know Apple's UITextInput protocol requires the two UITextRange properties selectedTextRange and markedTextRange and the documentation says that selectedTextRange is a subrange of markedTextRange which is an uncomfirmed text range by the user yatta yatta. That still doesn't make some things clear to me regarding how I ought to implement the two text ranges differently. Could someone visually explain to me the difference between selectedTextRange and markedTextRange? I know that when the length of selectedTextRange is 0 it indicates a blinking caret at selectedTextRange's location. But what the heck is "marked text"?? I've only seen the following for text views in iOS:

Which I assume represents the current selectedTextRange. What does markedTextRange look like? Or is it basically the exact same thing? I'm so confused :( Thanks in advance for any help! The documentation has proven itself useless in my understanding of how to implement the UITextInput protocol.

EDIT

Does implementing markedTextRange have anything to do with the fact that some text in a view could be "markable" but "readonly" and selectedTextRange indicates the subrange in the "marked text", markedTextRange, that is readwrite?


回答1:


From Apple documentation for UITextInput:

Marked text, which is part of multistage text input, represents provisionally inserted text that the user has yet to confirm. It is styled in a distinctive way. The range of marked text always contains within it a range of selected text, which might be a range of characters or the caret.

Hence markedTextRange gets useful with languages that requires multistage input, e.g. Japanese. In simple words: what user types is yet to be confirmed before it can be added to the value of the text input control is were markedTextRange gets into the game. GIF bellow demonstrates markedTextRange in action:

Notice slight sapphire background behind the unconfirmed hieroglyphs. Once text gets confirmed either by hitting enter/return, selecting option from suggestions or finger tap on text area after the marked text gets added to the input control value and background gets removed.

Notes:

  • markedTextRange has nothing to do with read-only text
  • I was not able to achieve multiple symbols selection within markedTextRange


来源:https://stackoverflow.com/questions/24632708/uitextinput-selectedtextrange-vs-markedtextrange

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!