2012-06-06 10 views
5

Auf ios macht der TextInput Verrücktheit. Der folgende Code:Flex 4.6 TextInput mit Eingabeaufforderung auf IOS missbraucht

Wenn ich TextInput wähle, verschwindet die Eingabeaufforderung wie erwartet, aber das erste Zeichen wird automatisch ausgewählt. Wenn die zweite Taste gedrückt wird, wird das erste Zeichen entfernt. Dies geschieht nur, wenn das erste Zeichen eingegeben wird und das Feld eine Eingabeaufforderung enthält. "autoCorrect" scheint nichts zu tun.

Kennt jemand eine Problemumgehung für dieses Problem? Ich habe mir die SkinnableTextBase-Klasse angesehen, kann aber keinen schuldigen Code finden.

Diese Probleme begannen mit Flex 4.6.

Antwort

14

Nachdem ich Stunden im Flex-Code verbracht habe, habe ich endlich gemerkt, dass Flex nicht das Problem ist. Das Problem tritt auf mit Air 3.2 (auch in Air 3.3 beta). Wenn ich kompiliere mit Air 3.1, funktioniert alles gut.

Ich habe verschiedene Dinge ausprobiert und es scheint keine Möglichkeit zu sein, die ich es in Air 3.2 + beheben kann. Ich habe andere Projekte von mir, und es scheint, wie alle meine Anwendungen kompiliert mit Air 3.2 haben ein ähnliches Problem :(

[UPDATE]

Das Problem ist, irgendwo in SkinnableTextBase.as in Flex SDK

Wenn textDisplay_changeHandler (event: Event). genannt wird, invalidateSkinState() verursacht t Das Problem. Wenn Sie die Haut des Staates nichts („“) gesetzt ist, funktioniert es:

skin.currentState = ""; 
invalidateSkinState(); 

Das Problem ist, dass das Thema nicht richtig aktualisiert werden (und es ist ein h @ ck).

Wenn Sie setzen "showPromptWhenFocused" zu falsch in Ihrem CSS, das Problem tritt nicht auf; Der einzige Nebeneffekt ist, dass die Eingabeaufforderung verschwindet, wenn Sie die textInput ausgewählt haben.

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

Hoffe, das hilft jemandem.

+0

Das ist gut zu wissen. Danke für die Information. – AlBirdie

+0

Danke, löste mein Problem. – Drala

+1

Schade, dass das Problem in AIR 3.5 immer noch sehr präsent ist. Es sind diese kleinen Dinge, die Flex für eine ernsthafte Unternehmens-App-Entwicklung immer weniger geeignet machen. Vielleicht hat Adobe es aufgegeben, weil sie gesehen haben, dass das Framework überhaupt nicht für mobile Geräte geeignet ist. Es hat einfach zu viele Fehler. – AlBirdie

0

Scrollen Sie den TextInput? Wenn nicht, können Sie den neuen Flex 4.6 TextInput Mobile Skin verwenden. Die neue Skin verwendet StageText, das Ihre Probleme beheben kann. Entfernen Sie das Attribut skinClass = "spark.skins.mobile.TextInputSkin" und es sollte standardmäßig auf die neue Skin angewendet werden.

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

Hinweis: StageText nicht richtig machen, wenn Sie die TextInput- bewegen und Sie müssen die Flex 4.5 Handy Haut verwenden, wie Sie sich gerade befinden.

+0

Ich scrolle nicht den Text. Sie haben recht, wenn Sie die Skin "spark.skins.mobile.TextInputSkin" NICHT verwenden. Das Problem ist, dass StageText über alles andere gezogen wird, wenn Sie die mobile Skin nicht verwenden. Einschließlich Dialoge. Das ist einfach nicht cool :( – anber

+0

Ich muss auch erwähnen, dass die Verwendung der mobilen Haut und Compiling mit Air 3.1 funktioniert wie erwartet. Das Problem existiert nur von Air 3.2 +. Ich dachte, dass das Problem mit IOS sein könnte, aber die Version von Air scheint der Kern des Problems zu sein Ich brauche wirklich Air 3.2 wegen der Stage3D-Funktionalität. – anber

3

Fliegendes Problem ist für Textinput mit Spark-Skins mit FB4.6 und Air3.5 gelöst. Ich denke, das eigentliche Problem ist von Air. Aber jetzt wird das Softkeyboard nicht aktiviert, wenn es fokussiert ist.

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