2013-05-20 6 views
-1

이벤트 keyDown을 사용하여 서식있는 텍스트 편집기에 탭 키 기능을 추가하려고합니다. 그냥 분명히하려면, 탭 키에, 나는 '\ t'앞에 공백을두고 같은 텍스트 상자에 머물고 다음 객체로 건너 뛰지 말아야합니다. 다음 코드는 textArea에서는 완벽하게 작동하지만 RichTextEditor에서는 완벽하게 작동하지 않습니다. 내가 놓친 게 있니?서식있는 텍스트 편집기에서 탭 키 기능 추가 (Flex 3)

<mx:RichTextEditor width="90%" 
        height="274" 
        id="richTextArea" 
        htmlText="{chapterContent}" keyDown="onTabPress(event);"/> 

키보드 탭 키는 다음과 같이 스크립트 수준에서 처리됩니다.

private function onTabPress(eventkey:KeyboardEvent):void 
{ 
    switch(eventkey.keyCode) 
    { 
     case Keyboard.TAB: 
      var indexBegin:int = eventkey.currentTarget.selectionBeginIndex; 
      var range:TextRange = new TextRange(eventkey.currentTarget as UIComponent,false,indexBegin,indexBegin); 
      range.text = "\t"; 
      var indexNext:int = eventkey.currentTarget.selectionBeginIndex+range.text.length; 
      eventkey.currentTarget.setSelection(indexNext, indexNext); 
      focusManager.moveFocus(FocusRequestDirection.BACKWARD); 
      break; 
    } 
} 

감사합니다.

+0

은 내가 RTE는 제어 및 텍스트 영역으로 구성되어 있음을 알고있다. keyDown 수신기가 textArea에 연결되는지 어떻게 확인할 수 있습니까? 아마추어 같으면 사과드립니다. – shark1608

+0

'eventKey.stopImmediatePropagation()'을 시도 했습니까? – duTr

답변

0

같은 문제가있었습니다. KEY_DOWN 이벤트 대신 KEY_UP 이벤트가 사용되는 것처럼 나를 위해 일했습니다. 대신에 다시 초점을 이동

, 나는 RichTextEditor는의 텍스트 영역에 직접 초점을 설정 포커스 관리자를 사용하여

<mx:RichTextEditor id="rte_txt" /> 
rte_txt.textArea.setFocus(); 

이뿐만 아니라 작동합니다.

0

'\ t'문자를 RichTextEditor에 삽입하는 데 문제가있는 것 같습니다. 그러나 RichTextEditor 이벤트 대상에는 노출 된 textArea 구성 요소가 있습니다. 코드가 textArea에서 잘 작동하므로 대상을 약간 변경할 수 있습니다.

는 약간의 편집, 그러나 다음 코드는 나를 위해 작동 :와

private function onTabPressed(event:KeyboardEvent):void { 
     switch(event.keyCode) { 
      case Keyboard.TAB : 
       var indexBegin:int = event.currentTarget.textArea.selectionBeginIndex; 

       var range:TextRange = new TextRange(event.currentTarget.textArea as UIComponent, false, indexBegin, indexBegin); 
       range.text = "\t"; 

       var indexNext:int = event.currentTarget.textArea.selectionBeginIndex + range.text.length; 
       event.currentTarget.textArea.setSelection(indexNext, indexNext); 
       focusManager.moveFocus(FocusRequestDirection.BACKWARD); 
       break; 
     } 
    } 

:

<mx:RichTextEditor width="90%" 
        height="274" 
        id="richTextArea" 
        htmlText="{chapterContent}" 
        keyDown="onTabPress(event);"/>