我有一个自定义TextInput
,可以收听FocusEvent.FOCUS_IN
和FocusEvent.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
事件?有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
选项1.在Flex 4.1或4.5中使用Spak TextInput。默认情况下,这已经提供了promptDisplay(如评论中所述)
选项2.看看焦点皮肤。这种皮肤类通常放在正常皮肤上。这两者之间可能存在一些焦点模糊。尝试使用自定义焦点皮肤而不使用textDisplay和clear按钮。
选项3.不仅使用焦点事件来显示或隐藏提示,还要查看TextInput的内容。当通过绑定设置文本时,您不希望显示提示。