2012-06-06 12 views
5

Su iOS, TextInput rende stranezze. Il seguente codice:Flex 4.6 TextInput con prompt su ios misbehave

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

Quando seleziono il testoInput, il prompt scompare come previsto ma il primo carattere viene selezionato automaticamente. Quando viene premuto il secondo tasto, viene rimosso il primo carattere. Ciò accade solo quando il primo carattere viene digitato e il campo ha un messaggio di richiesta. "autoCorrect" non sembra fare nulla.

Qualcuno sa di una soluzione alternativa a questo problema? Ho esaminato la classe SkinnableTextBase ma non ho trovato alcun codice colpevole.

Questo problema è iniziato con Flex 4.6.

risposta

14

Dopo aver trascorso ore nel codice Flex, ho finalmente capito che Flex non è il problema. Il problema si verifica con Air 3.2 (anche in Air 3.3 beta). Se compilo con Air 3.1, tutto funziona correttamente.

Ho provato varie cose e sembra che non ci sia modo di sistemarlo in Air 3.2 +. Ho controllato altri progetti di mine e sembra che tutte le mie applicazioni compilate con Air 3.2 hanno un problema simile :(

[UPDATE]

Il problema è da qualche parte in SkinnableTextBase.as in Flex SDK

Quando textDisplay_changeHandler (event: Event). si chiama, invalidateSkinState() provoca t lui problema. Se si imposta lo stato della pelle di nulla (""), funziona:

skin.currentState = ""; 
invalidateSkinState(); 

Il problema è che il tema non aggiorna correttamente (ed è un h @ ck).

Se si imposta "showPromptWhenFocused" a falso nel CSS, il problema non si verifica; l'unico effetto collaterale è che il prompt scompare quando hai selezionato textInput.

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

Spero che questo aiuti qualcuno.

+0

Questo è bello sapere. Grazie per l'informazione. – AlBirdie

+0

Grazie, ho risolto il mio problema. – Drala

+1

Peccato che il problema sia ancora molto presente in AIR 3.5. Sono queste piccole cose che rendono Flex sempre meno praticabile per lo sviluppo di applicazioni aziendali serie. Forse Adobe l'ha abbandonato perché ha visto che il framework non era adatto per i dispositivi mobili in primo luogo. Ha solo troppi difetti. – AlBirdie

0

Stai scorrendo TextInput? Altrimenti puoi utilizzare la nuova skin mobile Flex 4.6 TextInput. Il nuovo skin utilizza StageText che può correggere i tuoi problemi. Rimuovi l'attributo skinClass = "spark.skins.mobile.TextInputSkin" e dovrebbe essere impostato di default sul nuovo skin.

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

Nota: StageText non viene visualizzato correttamente se si scorre la TextInput ed è necessario utilizzare la pelle mobili Flex 4.5 come ci si trova.

+0

Non sto scorrendo il testo. Hai ragione a NON usare la skin "spark.skins.mobile.TextInputSkin". Il problema è che se non usi la skin mobile, StageText è disegnato sopra ogni altra cosa. Compresi i dialoghi. ( – anber

+0

Devo anche dire che l'utilizzo della skin mobile e la compilazione con Air 3.1 funziona come previsto.Il problema esiste solo da Air 3.2 +. Stavo pensando che il problema potrebbe essere con IOS, ma la versione di Air sembra essere al centro del problema, ho davvero bisogno di usare Air 3.2 a causa della funzionalità stage3D. – anber

3

Problema di volo risolto per Textinput con scintilla con FB4.6 e Air3.5. Penso che il vero problema sia di Air. Ma ora la Softkeyboard non si attiva quando è focalizzata.

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