2010-09-16 36 views
2

我也做了標準TextInput組件
在此組件的重寫,我有:避免focusOut事件trigerred當apllication失去焦點

addEventListener(FocusEvent.FOCUS_OUT, handleFocusOut); 
  • 我的方法時觸發字段失去焦點的另一場(NICE)
  • 問題:它也觸發時整個Flex應用程序失去焦點(在我的領域具有當前焦點我的表單中)

問題:

  • 我做了什麼錯了?
  • 有沒有辦法避免做的東西,當它是一個應用程序專注事件?

問候

回答

0

我不知道這是爲什麼表現這種方式。但是,一種解決方案可能是在應用程序級別爲事件監聽器FOCUS_OUT事件並致電stopImmediatePropagation().

0

感謝您的幫助!
以下是我已經在我的組件(孩子的TextInput)來完成

添加兩個事件處理程序:
- 的addEventListener(Event.ACTIVATE,handleEventActivate);
- addEventListener(Event.DEACTIVATE,handleEventDeActivate);

他們更新內部場_isApplicationActive
我處理focusOut事件:
的addEventListener(FocusEvent.FOCUS_OUT,handleFocusOut);
在方法中我有
if(!_isApplicationActive){event.stopImmediatePropagation(); }

當我的focusOut處理函數在應用程序被停用時不會調用 因爲=>在FocusOut事件之前調用DECACTIVATE事件!

+0

stopImmediatePropagation會在輸入文本上產生小問題:您需要點擊它才能重新獲得藍色的焦點邊界(切換回應用程序是不夠的) – 2010-09-23 07:50:14

0

簡單的答案是檢查event.relatedObject(接收焦點的對象)是否爲空。 Flex的FocusManager嘗試真的很難確保一些 flex對象具有(flex)焦點,所以它不應該爲空,否則。

如果您需要,還可以檢查isRelatedObjectInaccessible