当应用程序启动时有两种状态时将焦点设置在 TextField 上
Posted
技术标签:
【中文标题】当应用程序启动时有两种状态时将焦点设置在 TextField 上【英文标题】:Setting focus on a TextField when application starts when there are two states 【发布时间】:2012-12-07 03:31:56 【问题描述】:我有下一个应用程序标题:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" creationPolicy="all" enterState="focusManager.setFocus(employeeIDTextInput);">
public function init():void
focusManager.showFocusIndicator = true;
focusManager.showFocus();
focusManager.setFocus(theTextInput);
TextInput 处于默认状态。但是当应用程序启动时,TextField 被聚焦(TextField 周围有一个蓝色矩形),但光标不在 TextField 内。但是在下一个状态中,我有另一个文本输入,当您在状态之间切换时,两个文本输入都按照您的预期正确聚焦,并且光标正确出现在每个文本输入中。
<mx:State name="secondState" enterState="focusManager.setFocus(anotherTextInput)">
我的问题是,为什么当应用程序启动时,光标不在 init() 函数中的 TextInput 内?
感谢您的回答
【问题讨论】:
您是否尝试在 applicationComplete 而不是 creationComplete 上运行您的函数? 当您的浏览器加载 SWF 时,应通过 javascript(或手动单击它)为 SWF 提供焦点。如果您尝试其中任何一种,光标是否会出现在文本输入中? user1875642 applicationComplete 事件未在组件中调度。 Suni D. 我不知道如何在 javascrip 中做到这一点 @YuryEuceda applicationComplete 是 在应用程序初始化、由 LayoutManager 处理并附加到显示列表后调度。这是在应用程序启动序列期间调度的最后一个事件。它晚于应用程序的 creationComplete 事件,该事件在预加载器被移除且应用程序已附加到显示列表之前被调度。 【参考方案1】:我解决了,这个问题是因为这是一个组件,并且是从主菜单调用的,并且在组件出现在屏幕上之前创建菜单的那一刻,就调度了 creationComplete 事件。我所做的是附加一个事件处理程序来显示事件,就是这样。
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init()" creationPolicy="all"
show="focusManager.setFocus(employeeIDTextInput)"
>
非常感谢每一位问我问题的人...
【讨论】:
以上是关于当应用程序启动时有两种状态时将焦点设置在 TextField 上的主要内容,如果未能解决你的问题,请参考以下文章