代码之家  ›  专栏  ›  技术社区  ›  Christ-OFF

避免在应用程序失去焦点时触发FocusOut事件

  •  2
  • Christ-OFF  · 技术社区  · 16 年前

    我已经重写了标准的TextInput组件
    在这部分中,我有:

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

    问题:

    • 我做错了什么?

    3 回复  |  直到 13 年前
        1
  •  0
  •   rkg    16 年前

    我不知道为什么会这样。但是一个解决方案可能是为 FOCUS_OUT 应用程序级别的事件和调用 stopImmediatePropagation().

        2
  •  0
  •   Christ-OFF    16 年前

    谢谢你的帮助!
    下面是我在组件(textinput子级)中所做的工作

    添加两个事件处理程序:
    -addEventListener(事件.激活,手部静脉曲张);
    -addEventListener(事件.停用,handleEventDeActivate);

    它们更新内部字段\u isApplicationActive
    我处理focusOut事件:
    addEventListener(FocusEvent.FOCUS\u输出,手眼);
    用我的方法
    如果(!_应用程序激活{event.stopImmediatePropagation事件.stopImmediatePropagation(); }

    因为=>在FocusOut事件之前调用Dectivate事件!

        3
  •  0
  •   Simon Buchan    10 年前

    简单的答案是检查 event.relatedObject (接收焦点的对象)为空。Flex的 FocusManager 努力确保 一些

    也要检查 isRelatedObjectInaccessible

    推荐文章