论坛首页 Web前端技术论坛

DataGrid的TextInput无法获取焦点问题

浏览 2532 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-04-25  

今天在对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,改了之后就不会再报错了,坑爹的玩意啊 

论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics