I took another look at this issue, and I think I found a way to keep a StageText from losing focus when touching something else on screen. It seems that you can call assignFocus() on the StageText in a FocusEvent.FOCUS_OUT listener. I looked for a way to call event.preventDefault() somewhere, but there doesn't seem to be anything like that with StageText. With that in mind, it's on the verge of being hacky, in my opinion. You may willing to risk the chance of this behavior changing, though.
I tested on iOS 8.4 and Android 5.1. On iOS, everything looks perfect. The keyboard remains open. On Android, there was a slight flicker of the suggestions above the keyboard, but the main keyboard remained open. Still, I think it's worth noting that AIR does not strictly define how StageText should behave when you call assignFocus() on the FocusEvent.FOCUS_OUT listener. In a future update to Android, iOS, or AIR, the soft keyboard may start its closing animation and then restore itself. Just be warned. StageText has been known to start behaving a little differently after an operating system update.
If you want to stop the soft keyboard from closing when pressing the enter key on the soft keyboard, you can call event.preventDefault() in the Keyboard.KEY_DOWN listener when the keyCode is equal to Keyboard.ENTER. Note that you may need to play with the value of returnKeyLabel to get Keyboard.ENTER to be detected. Not all labels result in the event being dispatched. Additionally, in the case of ReturnKeyLabel.NEXT, you may need to listen for Keyboard.NEXT instead.
I may be able to use this technique in StageTextTextEditor too, but I recommend using StageText directly instead of the Feathers TextInput for the time being.
Here's the code I tried:
public function Test()
this._st = new StageText();
this._st.fontFamily = "_sans";
this._st.fontSize = 20;
this._st.viewPort = new Rectangle(20, 20, 400, 50);
this._st.returnKeyLabel = ReturnKeyLabel.GO;
this._st.stage = this.stage;
var stBorder:Shape = new Shape();
stBorder.graphics.drawRect(0, 0, 400, 50);
stBorder.x = this._st.viewPort.x;
stBorder.y = this._st.viewPort.y;
var sprite:Sprite = new Sprite();
sprite.graphics.drawRect(0, 0, 400, 50);
sprite.x = 20;
sprite.y = 100;
private var _st:StageText;
private function stageText_focusOutHandler(event:FocusEvent):void
//don't lose focus!
private function stageText_keyDownHandler(event:KeyboardEvent):void
if(event.keyCode === Keyboard.ENTER)
//don't close the soft keyboard