如何通过keyEquivalents来阻止FlexNativeMenu来窃取我的击键?

时间:2012-05-22 01:40:23

标签: flex keystroke

我有一个原生菜单项,带有一个简单字母的快捷方式,如“F”。

<s:menu> 
    <mx:FlexNativeMenu id="mainMenu"
                       dataProvider="{menuData}"  
                       labelField="@label"  
                       keyEquivalentField="@keyEquivalent"  
                       showRoot="false" /> 
</s:menu> 

<fx:Declarations>
    <fx:XML format="e4x" id="menuData"> 
        <root> 
            <menuitem label="Edit"> 
                <menuitem label="Frame Selection" keyEquivalent="f"/>
            </menuitem> 
        </root> 
    </fx:XML>
</fx:Declarations>

这很好用,但是当我尝试在任何textfield或textInput中输入文本时 在应用程序的任何地方,我都无法输入f。

如何阻止菜单窃取我的键盘输入?

1 个答案:

答案 0 :(得分:0)

菜单加速器的更好模式可能会使用控制键,例如示例中的CTRL + F.

因此,您的menuitem将包含controlKey="true"

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                       xmlns:s="library://ns.adobe.com/flex/spark"
                       xmlns:mx="library://ns.adobe.com/flex/mx">

    <s:menu>
        <mx:FlexNativeMenu id="mainMenu"
                           dataProvider="{menuData}"
                           labelField="@label"
                           keyEquivalentField="@keyEquivalent"
                           showRoot="false" />
    </s:menu>

    <fx:Declarations>
        <fx:XML format="e4x"
                id="menuData">
            <root>
                <menuitem label="Edit">
                    <menuitem label="Frame Selection"
                              keyEquivalent="f"
                              controlKey="true" />
                </menuitem>
            </root>
        </fx:XML>
    </fx:Declarations>

    <s:TextInput />

</s:WindowedApplication>