Да? Значит я что-то делал не так
Автоматически – вряд ли... Скорее всего, придётся написать функцию преобразования позиции символа в обычном тексте в позицию в html-тексте, и с помощью неё вставлять введённый символ в html-текст. А сам html-текст хранить в дополнительной переменной, так как TextField изменяет значение своего свойства htmlText, дописывая туда всякие теги типа TEXTFORMAT. Хотя я не полностью в этом уверен, но вроде бы несколько раз сталкивался.
С функцией преобразования проблем особых быть не должно, она должна просто пропускать все теги. Единственно что, могут быть небольшие сложности с <p>, <br> и пробелами между тегами, которые, насколько я помню, в некоторых случаях пропускаются. Это если писать компонент для произвольного html-текста. Если же чётко задать допускаемый формат html-разметки, то многое упрощается.
Добавлено через 4 минуты
И ещё немного не в тему)
Мне кажется, лучше блок if в обработчике из вашего примера переписать так:

Код AS3:
if (evt is TextEvent) {
var textEvt:TextEvent = evt as TextEvent;
textEvt.preventDefault();
super.htmlText = super.htmlText + textEvt.text;
super.setSelection(super.htmlText.length, super.htmlText.length);
}