更新:显然这是accessibility scheme of Flex Spark Components星火按钮俘获的keydown(空格键)事件
Button控件按空格键激活按钮控制的一部分。要取消激活按钮,请在释放空格键之前按下Tab键将焦点从 移开。
我想它可以通过编译器指令关闭:Accessibility best practices
问:没有任何理由火花按钮会捕获关键事件,特别是“空格”键事件?
背景:我已经继承并维护了一个在Flex 4.6中完成的大型遗留项目。我看到一个奇怪的行为与Spark Button
。基本上,一旦按钮被点击(即给定焦点),keyEvent(spaceBar)将触发附加到按钮的点击事件处理程序。
奇怪的是吧?
该按钮在MX:Module
内的MXML
(以下)中定义。该模块具有安装阶段关键事件侦听器,但对于那些在事件处理程序做什么用的按钮:
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, echoKeyDownHandler);
this.stage.addEventListener(KeyboardEvent.KEY_UP, echoKeyUpHandler);
如果我把trace语句按钮的事件处理程序检查事件类型时,会发生这种怪异的行为,该类型报告为click
。我没有看到Spark Button关于捕获这样的关键事件的文档中的任何内容。
<s:Button id="toggleBtn"
label="Editor"
click="toggleBtn_clickHandler(event)"
x="943" y="8"/>
哦,是的,'keyboardPressed'是保护,所以它只会在一个自定义组件内扩展s:按钮 - 我的错。 – FatalDiskError
不是100%与您的问题相关,但也检查属性** tabEnabled **和** tabFocusEnabled **。所以你至少可以摆脱导航。我认为Adobe放弃了Flex的原因;-) –
FatalDiskError