如何在 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 组件中的文本

Flex 4.6 AIR 3.2 TextInput 工件

如何知道 TextInput 组件在 Flex 中是不是处于活动状态

在 Flex 中的 spark TextInput 中添加搜索图标

如何允许用户在 Flex TextInput 控件中键入 TAB 字符?

如何在 Flex 4.5 的 TextInput 中控制光标(克拉)位置