2012-06-06 60 views
5

在ios上,TextInput使人感到奇怪。以下代碼:Flex 4.6 TextInput,並提示對ios行爲異常

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

當我選擇textInput時,提示會按預期消失,但第一個字符是自動選擇的。當第二個鍵被按下時,第一個字符被移除。只有在輸入第一個字符並且該字段有提示消息時纔會發生這種情況。 「autoCorrect」似乎沒有做任何事情。

有沒有人知道這個問題的解決方法?我查看了SkinnableTextBase類,但找不到任何有罪的代碼。

這個問題從Flex 4.6開始。

回答

14

在Flex代碼中花費數小時後,我終於意識到Flex不是問題。這個問題與空氣3.2(也在空氣3.3測試版)。如果我編譯空氣3.1,一切工作正常。

我試過各種東西,似乎沒有辦法我可以修復它在空氣3.2 +。我檢查我的其他項目,它似乎像航編譯3.2也有類似的問題:(我所有的應用程序

[更新]

的問題是在SkinnableTextBase.as某處的Flex SDK

textDisplay_changeHandler(事件:事件)。被調用,invalidateSkinState()導致ŧ他的問題。如果設置了皮膚的狀態沒有什麼(「」),它的工作原理:

skin.currentState = ""; 
invalidateSkinState(); 

的問題是主題不正確更新(這是一個H + CK)。

如果設置「showPromptWhenFocused」在你的CSS假,問題不會發生;唯一的副作用是當您選擇textInput時提示消失。

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

希望這可以幫助別人。

+0

這是很好的瞭解。感謝您的信息。 – AlBirdie

+0

謝謝,解決了我的問題。 – Drala

+1

太糟糕了,這個問題仍是AIR 3.5非常存在。正是這些小事讓Flex變得更少,並且對於嚴肅的企業應用程序開發來說不太可行。也許Adobe放棄了它,因爲他們發現該框架首先不適合移動設備。它只是有太多的缺陷。 – AlBirdie

0

你在滾動TextInput嗎?如果沒有,您可以使用新的Flex 4.6 TextInput移動皮膚。新的皮膚利用StageText可以糾正你的問題。刪除屬性skinClass =「spark.skins.mobile.TextInputSkin」,它應該默認爲新皮膚。

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

注:如果您滾動了TextInput StageText的不能正常顯示,當你現在是你必須使用Flex 4.5移動皮膚。

+0

我不是滾動文本。對於不使用「spark.skins.mobile.TextInputSkin」外觀是正確的。問題是,如果你不使用移動皮膚,StageText被繪製在一切之上。包括對話框。這只是不爽:( – anber

+0

我還必須提到,使用手機皮膚和編譯與空氣3.1的預期效果。問題只存在於空氣3.2 +。我認爲這個問題可能與IOS,但空氣的版本似乎是問題的核心,因爲Stage3D的功能,我真的需要使用Air 3.2。 – anber

3

使用FB4.6和Air3.5的火花皮膚TextInput解決了飛行問題。我認爲實際問題來自Air。但是現在SoftKeyboard在關注時未被激活。

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