2012-06-06 28 views
5

En ios, el TextInput crea rareza. El siguiente código:Flex 4.6 TextInput con solicitud en IOS se comporta mal

 <s:TextInput id="password" width="100%" displayAsPassword="true" 
        needsSoftKeyboard="true" 
        prompt="Password" 
        softKeyboardType="default" 
        returnKeyLabel="done" 
        autoCorrect="false" 
        skinClass="spark.skins.mobile.TextInputSkin" 
        /> 

Cuando selecciono la entrada de texto, el aviso desaparece como se esperaba, pero el primer carácter se selecciona automáticamente. Cuando se presiona la segunda tecla, se elimina el primer carácter. Esto solo ocurre cuando se escribe el primer caracter y el campo tiene un mensaje de solicitud. "autocorrección" no parece hacer nada.

¿Alguien conoce una solución a este problema? Miré la clase SkinnableTextBase pero no puedo encontrar ningún código culpable.

Este problema comenzó con Flex 4.6.

Respuesta

14

Después de pasar horas en el código Flex, finalmente me di cuenta de que Flex no es el problema. El problema ocurre con Air 3.2 (también en Air 3.3 beta). Si compilo con Air 3.1, todo funciona bien.

He intentado varias cosas y parece que no hay manera de que pueda solucionarlo en Air 3.2 +. Revisé otros proyectos mío y parece que todas mis aplicaciones compiladas con Aire 3.2 tienen un problema similar :(

[ACTUALIZACIÓN]

El problema está en algún lugar SkinnableTextBase.as en Flex SDK

Cuando textDisplay_changeHandler (event: Event). se llama, invalidateSkinState() t causa el problema Si se establece el estado de la piel para nada (""), funciona:

skin.currentState = ""; 
invalidateSkinState(); 

El problema es que el tema no se actualiza correctamente (y es un h @ ck).

Si establece "showPromptWhenFocused" a falsa en el CSS, el problema no ocurre; el único efecto secundario es que el mensaje desaparece cuando tiene seleccionada textInput.

s|TextInput 
{ 
    skinClass:ClassReference("spark.skins.mobile.TextInputSkin"); 
    showPromptWhenFocused: false; 
} 

Espero que esto ayude a alguien.

+0

Eso es bueno saberlo. Gracias por la información. – AlBirdie

+0

Gracias, resolvió mi problema. – Drala

+1

Lástima que el problema todavía esté muy presente en AIR 3.5. Son estas pequeñas cosas las que hacen que Flex sea cada vez menos viable para el desarrollo serio de aplicaciones empresariales. Tal vez Adobe lo abandonó porque vieron que el marco no era realmente adecuado para dispositivos móviles en primer lugar. Simplemente tiene demasiados defectos. – AlBirdie

0

¿Está desplazando el TextInput? De lo contrario, puede usar el nuevo skin móvil Flex 4.6 TextInput. La nueva máscara utiliza StageText que puede corregir sus problemas. Elimine el atributo skinClass = "spark.skins.mobile.TextInputSkin" y debería tener como valor predeterminado el nuevo aspecto.

<s:TextInput id="password" width="100%" displayAsPassword="true" 
       needsSoftKeyboard="true" 
       prompt="Password" 
       softKeyboardType="default" 
       returnKeyLabel="done" 
       autoCorrect="false" 
       /> 

Nota: StageText no se muestra correctamente si se desplaza el TextInput y debe utilizar la piel móvil de Flex 4.5 como se encuentra actualmente.

+0

No estoy desplazando el texto. Tiene razón acerca de NO usar la máscara "spark.skins.mobile.TextInputSkin". El problema es que si no usas el skin móvil, StageText se dibuja sobre todo lo demás. Incluyendo Diálogos. Eso no es genial :( – anber

+0

También debo mencionar que usar el skin móvil y compilar con Air 3.1 funciona como se esperaba. El problema solo existe en Air 3.2 +. Estaba pensando que el problema podría ser con IOS, pero la versión de Air parece ser el núcleo del problema. Realmente necesito usar Air 3.2 debido a la funcionalidad stage3D. – anber

3

El problema de vuelo se resuelve para Textinput con spark skins con FB4.6 y Air3.5. Creo que el problema real es de Air. Pero ahora el Softkeyboard no se activa cuando está enfocado.

<s:TextInput id="mail" softKeyboardType="email" skinClass="spark.skins.spark.TextInputSkin" /> 
Cuestiones relacionadas