2012-05-22 23 views
0

我有一個簡單的字母,如「F」的快捷方式的原生菜單項。如何用keyEquivalents阻止FlexNativeMenu竊取我的按鍵?

<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> 

這個偉大的工程,但是當我嘗試鍵入任何文本框的文本或爲textInput 在該應用的任何,我不能永遠F型。

如何阻止菜單竊取我的鍵盤輸入?

回答

0

也許一個更好的菜單加速器模式可以使用控制鍵,例如CTRL + F。

你的菜單項,因此將包括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> 
+0

我已經使用控制鍵的同時,我找到一個更好的解決方案,但寧願使用f的,而不是直接控制+ F,我看不出有任何理由的菜單項應停止鍵盤事件,而不是讓它冒泡。 –

+0

通過僅指定「f」,您可以明確定義一個功能強大的快速加速器,以方便您的設計。結合文本輸入操作是不合邏輯的。但是,我知道您正在通過停止即時事件傳播來尋求獨特的可用性。 –

+0

這似乎是adobe方面的一個錯誤,http://forums.adobe.com/thread/708981 –