我正在开发具有ColorPicker组件的Flash Builder应用程序。当ColorPicker具有焦点并且我从键盘向左按下右箭头时,颜色会发生变化。
来自there的文档说明这是ColorPicker的默认行为:
当样板面板关闭但具有焦点时,按向上和向下箭头键无效。左箭头键和右箭头键可更改颜色选择器选择,移动颜色,就像面板打开一样。
不幸的是,将焦点设置为false并没有帮助。 有没有办法避免使用键盘箭头改变颜色?
谢谢。
答案 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);
}
}
注意,这是未经测试的,您可能需要更多逻辑才能使其正常工作。我建议检查超类方法;)