当应用程序失去焦点时,避免触发Focus Out事件

时间:2010-09-16 09:33:47

标签: flex actionscript

我完成了对标准TextInput组件的覆盖 在这个组件中,我有:

addEventListener( FocusEvent.FOCUS_OUT, handleFocusOut ); 
  • 当该字段失去另一个字段的焦点(不错)
  • 时会触发我的方法
  • 问题:当整个flex应用程序失去焦点时(当我的字段在我的表单中有当前焦点时)也会触发它。

问题:

  • 我做错了什么?
  • 当它是一个应用程序聚焦事件时,有没有办法避免做某事?

此致

3 个答案:

答案 0 :(得分:0)

我不确定为什么这样做。但是一个解决方案可能是在应用程序级别为FOCUS_OUT事件设置eventListener并调用stopImmediatePropagation().

答案 1 :(得分:0)

感谢您的帮助!
这是我在我的组件(textinput child)中所做的事情

添加两个事件处理程序:
- addEventListener(Event.ACTIVATE,handleEventActivate);
- addEventListener(Event.DEACTIVATE,handleEventDeActivate);

他们更新内部字段_isApplicationActive
我处理focusOut事件:
addEventListener(FocusEvent.FOCUS_OUT,handleFocusOut);
在方法中我有 if(!_isApplicationActive){event.stopImmediatePropagation(); }

这样我的focusOut处理函数在取消激活应用程序时不会被调用 因为=>在FocusOut事件之前调用DECACTIVATE事件!

答案 2 :(得分:0)

简单的答案是检查event.relatedObject(接收焦点的对象)是否为空。 Flex的FocusManager尝试很难确保某些 flex对象具有(flex)焦点,所以它不应该为null。

如果可能,还要检查isRelatedObjectInaccessible