我有一个按钮栏 inf flex 以及其他几个输入控件,我已经为每个控件设置了 tabIndex 属性,并且一切顺利,直到我切换到 ButtonBar。
ButtonBar 有 3 个按钮,但对它进行制表符,只有第一个按钮获得焦点,再次制表符,焦点回到顶部控件...
如何使选项卡通过 Flex 按钮栏中的所有按钮?有没有办法做到这一点,还是我需要为此创建单独的按钮?
这对我来说似乎是一个可能的错误......
我有一个按钮栏 inf flex 以及其他几个输入控件,我已经为每个控件设置了 tabIndex 属性,并且一切顺利,直到我切换到 ButtonBar。
ButtonBar 有 3 个按钮,但对它进行制表符,只有第一个按钮获得焦点,再次制表符,焦点回到顶部控件...
如何使选项卡通过 Flex 按钮栏中的所有按钮?有没有办法做到这一点,还是我需要为此创建单独的按钮?
这对我来说似乎是一个可能的错误......
该组件是这样编写的,因此当焦点在栏内时,用户必须按下左/右箭头键才能遍历按钮——这是一种相当标准的 GUI 行为(您也可以在单选按钮组等其他地方看到这一点)。如果您查看ButtonBar 的 SDK 源代码,您可以看到他们在创建每个子按钮时显式禁用选项卡焦点的位置:
override protected function createNavItem(
label:String,
icon:Class = null):IFlexDisplayObject
{
var newButton:Button = Button(navItemFactory.newInstance());
// Set tabEnabled to false so individual buttons don't get focus.
newButton.focusEnabled = false;
...
如果你真的想改变这种行为,你可以创建一个子类来做到这一点,如下所示:
package {
import mx.controls.Button;
import mx.controls.ButtonBar;
import mx.core.IFlexDisplayObject;
public class FocusableButtonBar extends ButtonBar {
public function FocusableButtonBar()
{
super();
this.focusEnabled = false;
}
override protected function createNavItem(
label:String, icon:Class=null):IFlexDisplayObject
{
var btn:Button = Button(super.createNavItem(label, icon));
btn.focusEnabled = true;
return btn;
}
}
}