Flex学习记录(popup弹出窗口的基础上处理focusIn和focusOut事件)
我想要在用户聚焦在一个标签上时,显示一个弹出窗口,并且当用户离开聚焦的时候关闭这
个弹出窗口。
使用focusIn 和focusOut 事件(在InteractiveObject 类的子类的所有实例都可用)来调用
PopUpManager 相关的方法。
在用户聚焦时启动一个窗口,你可以重用前两节的代码。不过就是把弹出窗口的启动从用户
点击LInkButton 切换到通过focusIn 事件来创建而已。组件接受到聚焦的时候就会发布
focusIn 事件,例如当用户按tab 切换到组件上或者点击了它。focusIn 事件的处理代码只需
要在之前章节的内容添加一点:
移除这句代码,如果用鼠标交互,不影响程序运行效果。如果用 tab 键切换焦点,就会出现错误。
systemManager.removeFocusManager(IFocusManagerContainer(popup))
对应的上下文:
Code View:
当任意的弹出窗口被创建,默认情况,SystemManager 会被弹出窗口联结的FocusManager
激活。它允许基于刚创建的弹出窗口实现的聚焦循环(控制tab 顺序)。在这节,我们期
望一个不同的行为。当用户聚焦离开的时候(例如用户tab 出组件),弹出窗口因该关闭。
这就是从SystemManager 上移除了弹出窗口的FocusManager 所获得的。因此重新启动应用
程序的FocusManager。FocusOout 事件的处理函数closePopUp 包含了关闭弹出窗口的逻辑。
当这个应用程序运行中,重复按下tab 键的时候,聚焦会循环的在LinkButton 上产生,并
且相关的弹出窗口会被创建或者移除。