Я пытаюсь переопределить обработку по умолчанию клавиш «вверх» и «вниз» для редактируемого списка, так что при нажатии редактируемая запись списка ведет себя так, как если бы была нажата управляющая клавиша,но «строка выбранного элемента» перемещается вверх или вниз.
Вот мой (упрощенный) компонент:
<?xml version="1.0" encoding="utf-8"?>
<mx:List xmlns:mx="http://www.adobe.com/2006/mxml"
enabled="true" width="100%" height="100%"
creationComplete="initialise()"
editable="true"
>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private function initialise():void
{
dataProvider = new ArrayCollection(["this", "is", "a", "very", "simple", "example"]);
}
override protected function keyDownHandler(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.ESCAPE
|| event.keyCode == Keyboard.DOWN
|| event.keyCode == Keyboard.UP)
endEdit("ENDEDIT"); // Same behaviour with destroyItemEditor();
super.keyDownHandler(event);
//callLater(this.setFocus);
}
]]>
</mx:Script>
По некоторым причинам это не работает:если строка редактируется, первое нажатие клавиши «вверх» (или вниз) завершает редактирование и перемещает панель.Дальнейшее нажатие клавиш вверх или вниз не имеет никакого эффекта, но если вы щелкнете где-нибудь рядом со списком, оно начнет работать.Это заставляет меня думать, что это главный вопрос.Как ни странно, если вы нажмете escape, редактирование закончится, и вы сможете правильно перемещаться вверх и вниз.
Если строка callLater не закомментирована, чтобы попытаться удержать фокус в списке, панель первоначально перемещается в направлениинажмите, но затем снова вернитесь и отредактируете исходную строку!
У кого-нибудь есть идеи?
Заранее спасибо,
Майк