這是非常令人沮喪,因爲有幾個不同的東西,會影響這一點。
1)將您的事件偵聽器添加到適當的位置。您擁有的代碼可以很好地捕獲,只需確保它位於事件被觸發的父級或以上級別。
2)你需要確保你有重點。這通常是人們遇到的問題,它在文檔中,但不是很明確。如果你在這裏查看實時文檔鏈接,並搜索setFocus() - 你會注意到它的每一個例子(除了頂部,這是壞的!) - 然而,他們從來沒有提到它在頁面上的實際文檔中。
http://livedocs.adobe.com/flex/3/html/help.html?content=events_11.html
所以,即使在他們的第一個例子,如果你點擊進入應用程序(而不是文本框),它不會工作!
<?xml version="1.0"?>
<!-- events/TrapAllKeys.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp();">
<mx:Script><![CDATA[
private function initApp():void {
application.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
}
private function keyHandler(event:KeyboardEvent):void {
t1.text = event.keyCode + "/" + event.charCode;
}
]]></mx:Script>
<mx:TextInput id="myTextInput"/>
<mx:Text id="t1"/>
</mx:Application>
但是,如果您通過更改init函數來自己設定焦點,它會!
private function initApp():void {
application.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
myTextInput.setFocus();
}
另一個技巧進行測試,如果這是你的問題是添加一個文本框爲具有捕捉容器的孩子,如果他們你在文本框中單擊後神奇的工作 - 它的一個焦點問題,確實!
=)
感謝內特,我會嘗試,太多,但什麼Shanethehat提示很容易過的工作。 – Tintin