有没有办法禁用ColorPicker的左/右键盘箭头?

时间:2013-09-30 09:12:36

标签: actionscript-3 flex flash-builder flex4.5 flexbuilder

我正在开发具有ColorPicker组件的Flash Builder应用程序。当ColorPicker具有焦点并且我从键盘向左按下右箭头时,颜色会发生变化。

来自there的文档说明这是ColorPicker的默认行为:

  

当样板面板关闭但具有焦点时,按向上和向下箭头键无效。左箭头键和右箭头键可更改颜色选择器选择,移动颜色,就像面板打开一样。

不幸的是,将焦点设置为false并没有帮助。 有没有办法避免使用键盘箭头改变颜色?

谢谢。

1 个答案:

答案 0 :(得分:2)

支持键盘导航的Flex组件会覆盖由keyDownHandler()定义的名为UIComponent的受保护方法。还有keyUpHandler()方法,但您通常只需要使用其中一种方法。

在这种情况下,ColorPicker组件会覆盖keyDownHandler()。它很长,您可以在第1436行的Apache Flex github repo中看到它。

您可以创建一个自定义颜色选择器类来覆盖此方法,如果按下箭头键,则不会调用超类方法:

override protected function keyDownHandler(event:KeyboardEvent):void
{
    var keyCode:uint = event.keyCode;
    // don't call the super class for these keys
    if ( !(keyCode == Keyboard.LEFT || keyCode == Keyboard.RIGHT) )
    {
        super.keyDownHandler(event);
    }
}

注意,这是未经测试的,您可能需要更多逻辑才能使其正常工作。我建议检查超类方法;)