2010-07-27 13 views
5

Estoy tratando de tener una ventana emergente con un TextInput editable inmediatamente. Esto significa que el usuario debería poder escribir dentro de TextInput una vez que se muestre la ventana emergente.Establecer el foco en un texto emergente Control de entrada

El problema es que no puedo enfocarme en la entrada de texto. Lo que sucede es que al presionar una tecla por primera vez, no se inserta texto, solo después de presionar una segunda tecla el componente gana el foco y el usuario puede escribir. Por ejemplo, al escribir "prueba" una vez que se abre la ventana emergente, se muestra "est" ...

Por alguna razón, el componente solo se enfoca cuando el usuario hace clic explícitamente en él o escribe algo. La configuración programática del foco no funciona.

¿Alguna idea/sugerencia?

Código:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Panel xmlns="mog.miss.component.*" xmlns:mx="http://www.adobe.com/2006/mxml" > 

<mx:Script> 
    <![CDATA[ 
     import mx.managers.IFocusManagerComponent; 

     private function focus():void{ 
      focusManager.setFocus(commentTextInput as IFocusManagerComponent); 
      commentTextInput.setSelection(commentTextInput.text.length,commentTextInput.text.length); 
     } 

    ]]> 
</mx:Script> 
<mx:TextInput id="commentTextInput" creationComplete="{focus()}" /> 

</mx:Panel> 
+0

tienes la fuente de la ventana emergente – Grumpy

Respuesta

2

El problema era que yo estaba desencadenando la llamada emergente con la tecla F10. El F10 está reservado en el sistema ... activó el controlador y se creó la ventana emergente, pero de alguna manera la aplicación perdió el foco. Usar otra clave lo solucionó. La única clave reservada es F10. More about that

0

Depende de cómo intenta hacerlo. Lo que funciona para mí es el manejo del Evento creationComplete del emergente:

private function onCreationComplete():void 
{ 
    focusManager.setFocus(this.mytextInput as IFocusManagerComponent); 
} 

PS: Se añade el "controlador" en el ejemplo a través de mxml por lo que no tiene parámetros.

+0

que no funciona como se esperaba ... –

+0

Por curiosidad qué sistema operativo y el navegador está usando? –

0

Esto es lo que funciona para mí. En el caso de creationComplete la ventana pop-up:

private function onCreationComplete():void 
{ 
    callLater(this.commentTextInput.setFocus); 
} 
+0

Eso sí funciona ... el problema era algo completamente diferente. Estaba usando la tecla F10 para activar la ventana emergente. Simplemente sucede que F10 es sistema reservado. Usar otra clave funciona bien. –

0

en mi caso solo he implementado IFocusManagerContainer en mi componente personalizado y todo funcionaba bien

var _defaultButton privada: IFlexDisplayObject =/componente predeterminado /;

public function get defaultButton():IFlexDisplayObject{ 
     return _defaultButton; 
    } 
    public function set defaultButton(value:IFlexDisplayObject):void{ 
     _defaultButton = value; 
     ContainerGlobals.focusedContainer = null; 
    } 
Cuestiones relacionadas