更新:顯然這是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