如何在 Flex 3 中的 TextInput 上的 keyDownHandler 上设置文本属性
Posted
技术标签:
【中文标题】如何在 Flex 3 中的 TextInput 上的 keyDownHandler 上设置文本属性【英文标题】:How to set text property on keyDownHandler on TextInput in Flex 3 【发布时间】:2011-12-05 08:26:47 【问题描述】:简单直接。 我扩展了 mx.controls.TextInput 以创建具有不同行为的自定义组件。 我正在尝试在 keyDownHandler() 上设置 text 属性,但由于某种原因,它没有按我的预期工作。组件上的文本只是有点忽略了更改。 我正在使用 Flex 3.6。 下面是一个简单的示例代码,解释了发生了什么:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:customcomponent="com.test.customcomponent.*">
<customcomponent:TextTest x="20" y="20"/>
</mx:Application>
以及低于 de AS 类:
package com.test.customcomponent
import flash.events.KeyboardEvent;
import mx.controls.TextInput;
public class TextTest extends TextInput
public function TextTest()
super();
override protected function keyDownHandler(event:KeyboardEvent):void
text = "lol. It doesn't work";
【问题讨论】:
【参考方案1】:您需要阻止默认的按键按下事件。
override protected function keyDownHandler(event:KeyboardEvent):void
text = "lol. It doesn't work";
event.preventDefault();
event.stopImmediatePropagation();
event.stopPropagation()
【讨论】:
试过了,没用。由于某种原因,每当我按 CTRL、SHIFT 或 TAB 键时,它都能正常工作...【参考方案2】:为了能够防止默认处理,您必须在处理程序上有足够高的优先级(keyDownHandler() 没有)。这意味着您需要注册自己的方法,优先级 > 0。
你可以这样试试:
public function MyTextInput()
addEventListener(KeyboardEvent.KEY_DOWN, yourHandler,
false, EventPriority.BINDING, true);
...
private function yourHandler(event : KeyboardEvent) : void
// stop further handling
event.preventDefault();
event.stopImmediatePropagation();
event.stopPropagation();
// do your work here
text = ...;
【讨论】:
以上是关于如何在 Flex 3 中的 TextInput 上的 keyDownHandler 上设置文本属性的主要内容,如果未能解决你的问题,请参考以下文章
将 DropShadowFilter 应用于 Flex 3 中 mx.controls.TextInput 组件中的文本
如何知道 TextInput 组件在 Flex 中是不是处于活动状态
在 Flex 中的 spark TextInput 中添加搜索图标