`
jueyue
  • 浏览: 193578 次
社区版块
存档分类
最新评论

DataGrid的TextInput无法获取焦点问题

    博客分类:
  • flex
阅读更多

今天在对DataGrid的进行数据编辑是利用渲染器加入了TextInput空间,但是只要点中就会出现

scroll的焦点获取失败即:

有一个困扰多时的问题:
flex4,spark组件的
datagrid的itemrenderer中使用textinput组件,鼠标点击后报错:
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
        at spark.components::Scroller/focusInHandler()
        at flash.display::Stage/set focus()
        at flashx.textLayout.container::ContainerController/http://ns.adobe.com/textLayout/internal/2008::setFocus()
        at flashx.textLayout.container::ContainerController/mouseDownHandler()
        at flashx.textLayout.container::TextContainerManager/mouseDownHandler()
        at spark.components.supportClasses::RichEditableTextContainerManager/mouseDownHandler()
        at flashx.textLayout.container::ContainerController/http://ns.adobe.com/textLayout/internal/2008::requiredMouseDownHandler()
        at flash.events::EventDispatcher/dispatchEventFunction()
        at flash.events::EventDispatcher/dispatchEvent()
        at mx.core::UIComponent/dispatchEvent()
        at mx.managers::SystemManager/mouseEventHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2918]

 一开始以为是DataGrid的原因各种查找,虽然也利用这个查找过程学会了很多DataGrid的知识但是结果,

却和DataGrid无关的,是PopUpAnchor的问题,

   我这个DataGrid是PopUp弹出的,最外层使用的是Group但是group没有实现mx.managers.IFocusManagerContainer这个接口,对于这个接口官方说明是:

The IFocusManagerContainer interface defines the interface that containers implement to host a FocusManager. The PopUpManager automatically installs a FocusManager in any IFocusManagerContainer it pops up.

 就是实现了这个接口的容器,PopUpManager会自动注入一个FocusManager实例进去,但是坑爹事Group并没有实现,而且Group是渲染器和其他的组件最常用的容器,所以会报出如果获取FocusManager 即 focusManager=null,只需改成实现IFocusManagerContainer这个接口的容器就可以了,这里我用的

BorderContainer,改了之后就不会再报错了,坑爹的玩意啊 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics