The only way I have found to get close to the result I'm looking for on iOS is to remove the selectRange in setFocus(), otherwise it will select all the text if textInput is not in focus.
After removing the selectRange line StageText still does not behave the same. It depends on if textInput has focus or not.
If textInput already has focus it will place the cursor at the end of the word that the cursor is on.
If textInput does not have focus it will place the cursor to the right of the last char in the textInput.
public function setFocus():void
//if the text editor has focus, no need to set focus
//if this is invisible, it wouldn't make sense to set focus
//if there's a touch point ID, we'll be setting focus on our own
if(this._textEditorHasFocus || !this.visible || this._touchPointID >= 0)
if(this._isEditable || this._isSelectable)
this._isWaitingToSetFocus = false;
this._isWaitingToSetFocus = true;