2011-08-04 6 views
0

Flex 4.1のTextAreaのスクロール動作に奇妙な問題があります。 TextAreaのコンテンツの行末に¶を表示するには、次のコードを考えてみましょう:sの内容をチェーニングした後、奇妙なスクロール:TextArea

[Bindable] 
    public var text:String; 

    public var applied:Boolean = false; 

    protected function apply(event:MouseEvent):void 
    { 
     if (!applied) 
     { 
      text = text.replace(/\n/g,"¶\n"); 
      applied = true; 
     } 
     else 
     { 
      text = text.replace(/¶\n/g, "\n"); 
      applied = false; 
     } 
    } 
... 
<s:VGroup>  
    <s:TextArea height="200" width="200" text="@{text}"/> 
    <s:Button enabled="true" label="go!" click="apply(event)"/> 
</s:VGroup> 

私が初めてボタンを押すとpilcrowsがテキストに追加されます。私は単語の折り返しのために少数の行の移動を見ることを除いて、TextAreaはテキストの非常に離れた場所に大きすぎる "ジャンプ"を行います。これはコンポーネントの問題であると思われます。ジャンプは、含まれているテキストの先頭のイベントです。後でボタンを使ってピルクローを追加したり削除したりすると、スクロールが正常であるように見えます。

コンテンツの周りに奇妙なジャンプを経験することなく、TextAreaのテキストの正規表現をどのように置き換えることができますか? ありがとうございます!

+0

なぜ私はあなたがなぜダブルバインディング 'テキスト'なのかよく分かりません。つまり、元のテキストを直接変更し、ピルクローをテキストに追加します。ピルクローはビジュアルヘルパーとしてのみ存在する必要があります。個人的には、これはピルクローを追加する適切な方法だとは思わないし、その機能を持つカスタムテキストエリアを作成する方法もあります(既にWeb上に1つもない場合)。 –

答えて

1

私が提供したコードをテストし、TextAreaのスクロール位置に奇妙な「ジャンプ」がないことを確認しました。あなたが特定のポイントにとどまるために手動でスクロール位置を変更する必要がある場合

しかし、(例えばTextAreaのの上)、あなたは常にpilcrowsを適用した後、あなたのテキスト領域のスクロール位置のプロパティを更新できます

protected function apply(event:MouseEvent):void 
    { 
     if (!applied) 
     { 
      text = text.replace(/\n/g,"¶\n"); 
      applied = true; 
      textArea.scroller.verticalScrollBar.value = 0; //Set to the desired scroll position 
     } 
     else 
     { 
      text = text.replace(/¶\n/g, "\n"); 
      applied = false; 
      textArea.scroller.verticalScrollBar.value = 0; 
     } 
    } 

... 
<s:VGroup>  
    <s:TextArea id="textArea" height="200" width="200" text="@{text}"/> 
    <s:Button enabled="true" label="go!" click="apply(event)"/> 
</s:VGroup> 
+0

まあ、同様の方法で修正しました。つまり、textArea.textDisplay.verticalScrollPositionをtextArea.scroller.verticalScrollBar.valueの代わりに保存します。私はUPDATE_COMPLETEで、applyメソッドの本体ではしませんでした。最終的には、「ジャンプ」効果を完全に回避するために、「textArea.scroller.verticalScrollBar.value + = 0.00001」を追加する必要がありました。ありがとう! –

+0

@Georgi:ソリューションを投稿するか、少なくともスクロール位置を「保存」することで意味を説明できますか?私は同じ「ジャンプ」問題を抱えており、回避策を見つけることができます! – duTr

関連する問題