Flex Spark TextArea insertText разрывает буфер отмены

#apache-flex #actionscript-3 #textarea

#apache-flex #actionscript-3 #текстовая область

Вопрос:

У меня есть простая текстовая область

 <s:TextArea id="taData" keyUp="keyListener(event)" focusEnabled="false" fontFamily="Courier New" fontSize="12" left="10" right="10" top="40" bottom="10"/>
  

KeyListener позволяет использовать вкладку следующим образом

 private function keyListener(event:KeyboardEvent):void
{
    if (event.keyCode == Keyboard.TAB)
    {
        event.currentTarget..insertText("t");
    }
}
  

Все работает, как ожидалось, но буфер отмены сбрасывается / останавливается в тот момент, когда была вставлена вкладка.

Есть ли способ гарантировать, что буфер отмены остается в рабочем состоянии даже при вставленной вкладке

Ответ №1:

Если все, что вы хотите сделать, это вставить табуляцию в свой текст, когда пользователь нажимает клавишу tab, есть лучший способ сделать это (и я надеюсь, что это одновременно решит вашу проблему отмены).

Вам придется получить доступ к модели TextArea — объекту TextFlow — и поработать с его конфигурацией. Класс конфигурации textflow имеет свойство под названием ‘manageTabKey‘, которое по умолчанию равно ‘false’. Если вы установите для него значение ‘true’, он будет делать то, что, я думаю, вы пытаетесь сделать для себя, т. Е. Когда пользователь нажимает клавишу tab, вставляет символ табуляции вместо того, чтобы фокусировать внимание на следующем фокусируемом элементе.

 var textFlow:TextFlow = taData.textFlow;
var config:Configuration = Configuration(textFlow.configuration);
config.manageTabKey = true;
  

Приведение к конфигурации необходимо, поскольку TextFlow.configuration возвращает интерфейс IConfiguration, в котором нет метода настройки для manageTabKey.

Кроме того, вы даже можете установить ширину ваших вкладок, используя свойство ‘tabStops‘.

 textFlow.tabStops = "25 50 75 100";
  

Редактировать:
Я только что заметил, что вы установили для ‘focusEnabled’ значение false. В этом также больше не будет необходимости.