Flex 4中 弹出窗口focusManager值为null的解决办法

本文介绍了一个Flex应用程序中焦点管理的问题及解决方案。通过调整MXML结构并确保组件实现IFocusManagerComponent接口,成功解决了模态子窗口无法获取焦点的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

纠结了几天的问题终于解决了。我的代码结构是这样的,在一个主窗口中弹出一个模态子窗口,该子窗口结构(大概结构,并非完全代码)mxml代码如下:

<s:group>

<mx:TabNavigator>

<s:NavigatorContent>

<s:TextInput/>

</s:NavigatorContent>

<s:NavigatorContent/>

</mx:TabNavigator>

</s:group>

当点击弹出窗口以后,获取到的focusManager为null。后来经过查看国外的一些资料及api发现,应该是弹出窗口需要实现IFocusManagerComponent

参考http://eastmond.org/blog/?tag=popupmanager


IFocusManagerComponent的API中有一段话,也提到了这一点:

IFocusManagerComponent 接口用于定义一些接口,可获得焦点的组件必须实现这些接口才能从 FocusManager 获得焦点。UIComponent 类中提供了此接口的基本实现,但 UIComponent 并不实现完整的 IFocusManagerComponent 接口,因为部分 UIComponent 无需获得焦点。因此,要使 UIComponent 派生的组件成为一个可获得焦点的有效组件,只需将“implements IFocusManagerComponent”添加到类定义即可。

再经过查看s:group,并未实现IFocusManagerComponent,而TabNavigator则实现了TabNavigator,因此我尝试将上面的代码去掉了外层的s:group改成(大概):

<mx:TabNavigator>

<s:NavigatorContent>

<s:TextInput/>

</s:NavigatorContent>

<s:NavigatorContent/>

</mx:TabNavigator>

则focusManager不再为null,运行正常了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值