2011-08-04 2 views
0

Flex 4.1에서 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는 텍스트의 아주 먼 곳에 너무 큰 "점프"를합니다. 이것이 구성 요소의 문제인 것 같습니다. 때로는 점프가 포함 된 텍스트의 시작 부분에있는 이벤트입니다. 이후에 버튼을 사용하여 pilcrows를 추가하거나 제거하면 스크롤이 정상적으로 진행된 것 같습니다.

콘텐츠 주위의 이상한 점프를 경험하지 않고 TextArea 텍스트를 정규 표현식으로 대체하려면 어떻게해야합니까? 미리 감사드립니다.

+0

왜 나는 '텍스트'를 이중 바인딩하는지 잘 모르겠다. 즉, 원본 텍스트를 직접 수정하고 pilcrows를 텍스트에 추가하는 동안 pilcrows는 시각적 도우미로 있어야합니다. 개인적으로 필자는 이것이 pilcrows를 추가하는 적절한 방법이라고 생각하지 않으며 해당 기능이있는 사용자 지정 텍스트 영역을 만드는 방법을 모색합니다 (웹에 이미없는 경우). –

답변

1

내가 제공 한 코드를 테스트했지만 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 일 때 적용 메소드의 본문이 아닌이 작업을 수행했습니다. 결국 나는 "점프"효과를 완전히 피하기 위해 "textArea.scroller.verticalScrollBar.value + = 0.00001"을 추가해야했습니다. 감사! –

+0

@ Georgi : 솔루션을 게시하거나 스크롤 위치를 '저장'하여 의미를 설명하십시오. 나는 같은 '점핑'문제가 있으며 해결 방법을 찾을 수 있습니다! – duTr

관련 문제