将焦点设置在 Popup 的 textInput 控件上
Posted
技术标签:
【中文标题】将焦点设置在 Popup 的 textInput 控件上【英文标题】:Setting focus on a Popup's textInput control 【发布时间】:2011-03-21 13:12:52 【问题描述】:我正在尝试创建一个带有可立即编辑的 TextInput 的弹出窗口。这意味着一旦显示弹出窗口,用户应该能够在 TextInput 中输入内容。
问题是我无法专注于 textInput。发生的情况是,当第一次按下一个键时,没有插入文本,只有在按下第二个键后,组件才会获得焦点并且用户能够键入。例如,在弹出窗口打开后键入“test”会导致显示“est”...
由于某种原因,该组件仅在用户明确单击它或键入内容时才会获得焦点。以编程方式设置焦点不起作用。
有什么想法/建议吗?
代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns="mog.miss.component.*" xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:Script>
<![CDATA[
import mx.managers.IFocusManagerComponent;
private function focus():void
focusManager.setFocus(commentTextInput as IFocusManagerComponent);
commentTextInput.setSelection(commentTextInput.text.length,commentTextInput.text.length);
]]>
</mx:Script>
<mx:TextInput id="commentTextInput" creationComplete="focus()" />
</mx:Panel>
【问题讨论】:
你有弹窗的来源吗 【参考方案1】:问题是我用 F10 键触发了弹出调用。 F10 是系统保留的......它确实触发了处理程序并创建了弹出窗口,但不知何故应用程序失去了焦点。使用另一个键修复它。唯一的保留键是 F10。 More about that
【讨论】:
【参考方案2】:这取决于您如何尝试。对我有用的是处理弹出窗口的 creationComplete 事件:
private function onCreationComplete():void
focusManager.setFocus(this.mytextInput as IFocusManagerComponent);
PS:示例中的“handler”是通过mxml添加的,所以没有参数。
【讨论】:
出于好奇,您使用的是什么操作系统和浏览器?【参考方案3】:这对我有用。在弹窗的creationComplete
事件中:
private function onCreationComplete():void
callLater(this.commentTextInput.setFocus);
【讨论】:
这确实有效......问题完全是另一回事。我正在使用 F10 键来触发弹出窗口。恰好F10是系统保留的。使用另一个键可以正常工作。【参考方案4】:在我的情况下,我刚刚在我的自定义组件中实现了 IFocusManagerContainer 并且一切正常
private var _defaultButton:IFlexDisplayObject = /默认组件/;
public function get defaultButton():IFlexDisplayObject
return _defaultButton;
public function set defaultButton(value:IFlexDisplayObject):void
_defaultButton = value;
ContainerGlobals.focusedContainer = null;
【讨论】:
以上是关于将焦点设置在 Popup 的 textInput 控件上的主要内容,如果未能解决你的问题,请参考以下文章
将焦点自动更改为 react native 中的下一个 TextInput
在本机反应中单击 TextInput 字段外部时失去焦点并关闭键盘?
React Native Custom TextInput 对象在每个字符后失去焦点