2011-01-16 6 views
0

프로그래밍 방식으로 새로 생성 된 TextField에 포커스를 전달하려고하지만 어떤 이유로 setSelectionsetFocus이 작동하지 않습니다.TextField에서 포커스와 선택을 어떻게 설정합니까?

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="_init()"> 
<mx:Button click="{tf.setSelection(1,2)}" /> 
<mx:Script> 
<![CDATA[ 
import mx.core.UIComponent; 
    public var tf:TextField 


    private function _init():void{ 

     tf = new TextField(); 

      tf.text = "abcdefghijk"; 
    tf.type = TextFieldType.INPUT; 
    tf.autoSize = TextFieldAutoSize.LEFT; 

    var ui:UIComponent = new UIComponent(); 
    ui.addChild(tf); 
     addChild(ui); 
     tf.setSelection(0,1); 
     ui.setFocus(); 

     ui.addEventListener(MouseEvent.MOUSE_DOWN, function():void{ 
      tf.setSelection(0,3); 
     }); 
    } 

]]> 
</mx:Script>  
</mx:Application> 

아무것도 않는 유일한 setSelectionMOUSE_DOWN에 0.3 하나입니다 : 예를 들어, 아래에있는 내 테스트 코드를 참조하십시오. 이 모든 것은 마우스 클릭으로 포커스를받는 텍스트 필드와 관련이 있다고 가정합니다.하지만 필자의 삶은이를 수동으로 수행하는 방법을 찾아 낼 수 없습니다.

답변

1

Florian의 제안에 의거하여 다른 클래스를 조사 할 때 TextField를 하위 클래스로 사용하는 UITextField를 발견했습니다. 비록 IFocusManagerComponent 인터페이스를 구현하지 않지만 setFocus 메서드가 있습니다.이 메서드는 현재로서는 작동하고있는 것처럼 보입니다.

추가 이점으로 컨테이너에 직접 추가 할 수 있습니다. 즉, 먼저 UIComponent 상위를 구성하지 않아도됩니다.

1

setFocus는 mx.managers.IFocusManagerComponent를 구현하는 구성 요소에서 작동합니다. Textfield는 Flex 구성 요소가 아니며이 인터페이스를 구현하지 않으므로 작동하지 않습니다. 내가 너라면, 대신 입력 컨트롤이 필요하다는 것을 알기 위해 TextInput을 사용할 것입니다.

+0

TextInput 클래스가 너무 부피가 크거나 (예 : 자동 크기 조정) 간단한 작업을 수행하기가 어려워서 TextField를 사용하기로 결정한 것 같습니다. 나는 화이트 보드에 사용할 텍스트 영역/레이블을 만들려고 노력하고 있습니다. 그래서 나는 직업에 적합한 수업을 선택하는 것이 중요합니다. 그렇지 않으면 앞으로의 간단한 것들이 훨씬 더 어려워 질 수 있습니다. – cammil

관련 문제