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?
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