自定义TextInput组件失去焦点但仍包含光标?

时间:2011-10-29 00:04:57

标签: flex actionscript flex4.5

我有一个自定义TextInput,可以收听FocusEvent.FOCUS_INFocusEvent.FOCUS_OUT个事件:

textDisplay.addEventListener(FocusEvent.FOCUS_IN, onFocusInHandler);
textDisplay.addEventListener(FocusEvent.FOCUS_OUT, onFocusOutHandler);

我的onFocusInHandler功能基本上删除了"提示视图"告诉用户键入一个值,onFocusOutHandler执行相反的操作。

例如,如果将TextInput文本退格为空白值并且用户单击TextInput框,则会显示"请输入值" TextInput中的浅灰色提示。

在用户点击我们的自定义" Clear"按钮。清除按钮将文本设置为"",我可以告诉收到FocusEvent.FOCUS_OUT,因为提示文本设置为可见(其他地方没有设置)。问题是,光标仍然保留在框中,好像它仍然具有焦点一样,因此如果用户立即开始输入,则提示文本都是"请输入一个值" 用户输入的文字显示在灰色文字上,看起来非常难看且不可读。

如果TextInput实际上没有失去焦点,为什么会收到FocusEvent.FOCUS_OUT事件?有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

选项1.在Flex 4.1或4.5中使用Spak TextInput。默认情况下,这已经提供了promptDisplay(如评论中所述)

选项2.看看焦点皮肤。这种皮肤类通常放在正常皮肤上。这两者之间可能存在一些焦点模糊。尝试使用自定义焦点皮肤而不使用textDisplay和clear按钮。

选项3.不仅使用焦点事件来显示或隐藏提示,还要查看TextInput的内容。当通过绑定设置文本时,您不希望显示提示。