2011-01-08 13 views
0

DataGridMXDataGridItemRendererが適用され、いずれかの列にitemEditorが適用されています。エディタには、spark.components.TextAreaコントロールが含まれています。フレックス:MXDataGridItemRenderer内のspark.components.TextAreaに改行の問題があります

デフォルトでは、[enter]キーを押すと、データグリッドの任意のテキストエディタが閉じます。 これを覚えておいてください。私は何をしたいです:

  1. 防ぐエディタに閉じるから、[SHIFT + ENTER]キーが、改行を受け入れる(私はこれを行うことができ、以下のコードを参照してください)
  2. [ENTER]キー上のエディタを閉じますが、

    <s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
             xmlns:s="library://ns.adobe.com/flex/spark" 
             xmlns:mx="library://ns.adobe.com/flex/mx" 
             focusEnabled="true" 
             > 
    <fx:Script> 
        <![CDATA[ 
         protected function onTxtDataKeyDown(event:KeyboardEvent):void 
         { 
          if (event.keyCode == 13) 
          { 
           if (event.shiftKey) 
           { 
            //Prevent editor from closing on [SHIFT+ENTER] key but accept the linebreak 
            event.stopImmediatePropagation(); // » works 
           } 
           else 
           { 
            //Close the editor on [ENTER] key but do not accept the linebreak 
            event.preventDefault(); // » does not work 
           } 
          } 
         } 
    
        ]]> 
    </fx:Script> 
    
    <s:TextArea id="txtData" paddingTop="3" lineBreak="explicit" 
          text="{dataGridListData.label}" 
          verticalScrollPolicy="auto" horizontalScrollPolicy="off" 
          keyDown="onTxtDataKeyDown(event)" 
          /> 
    

    :改行を受け入れていない。ここ

MXDataGridItemRendererで現在のコードである(これを達成できませんでした) 0

私もtextInputイベントを試しましたが、そのトリックはしませんでした。 どうすればいいですか改行エディタが閉じているとき[enter]キー

何か助けていただければ幸いです。ありがとう。

EDIT:私はmx.controls.TextAreaにspark.components.TextAreaを変更すると、予想通り、event.preventDefault()との2番目の部分は動作しますが、その後、SHIFT + ENTERを最初の部分は、改行が動作しません受け付けます。

答えて

1

APIリファレンスによると、keyDownはAIRでのみ、Flash Playerではキャンセルできません。どちらを開発していますか? AIRでkeyDownまたはtextinputのいずれかをキャンセルできませんでした。バグかもしれない。 Adobeに欠陥を記録して、彼らの言うことを見てみませんか?

更新:これは本当にspark.components.TextAreaのバグであることを確認しました。スレッドhttp://forums.adobe.com/thread/703195は、同様の問題について話しています.BlackもFlexに対してログされています - http://bugs.adobe.com/jira/browse/SDK-25542

回避方法はmx.controls.TextAreaです。

+0

私が記事で述べたように、私はそれを前に試しました。 Spark.components.TextAreaでは動作しません。 Enterキーを押すと、textinputは何もトレースしません。 a、b、c..spaceなどの正規文字キーの場合にのみトレースします。 –

+0

それもできません。テキストがテキストエリアで選択されている場合はどうなりますか? Enterキーを押すとすべて消去され、改行だけを取り除いても問題は解決しません。 –

+0

私はAIR用に開発中です。はい、バグのようです。 –

0

私は良い英語ではありません。コードをご覧ください。

<!--snip--> 
<fx:Script> 
    <![CDATA[ 

     protected function textArea_creationCompleteHandler(event:FlexEvent):void{ 
      textArea.addEventListener(TextOperationEvent.CHANGING,onChangingHandler); 
     } 

     //This event is faster than KEY_DOWN. 
     private function onChangingHandler(event:TextOperationEvent):void { 
      if(event.operation is SplitParagraphOperation){ 
       //SplitParagraphOperation only cancel. 
       event.preventDefault(); 
      } 
     } 

    ]]> 
</fx:Script> 
    <s:TextArea id="textArea" 
        width="100" 
        creationComplete="textArea_creationCompleteHandler(event)" 
        height="60" 
        /> 
    <!--snip--> 
関連する問題