Flex 4.6 TextInput,提示ios行为不端

anb*_*ber 5 apache-flex prompt textinput autocorrect ios

在ios上,TextInput很奇怪.以下代码:

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

当我选择textInput时,提示会按预期消失,但第一个字符是自动选中的.按下第二个键时,将删除第一个字符.只有在键入第一个字符并且字段有提示消息时才会发生这种情况."autoCorrect"似乎没有做任何事情.

有谁知道这个问题的解决方法?我查看了SkinnableTextBase类,但找不到任何有罪的代码.

这个问题始于Flex 4.6.

anb*_*ber 14

在Flex代码中花了好几个小时后,我终于意识到Flex不是问题所在.问题发生在Air 3.2(也在Air 3.3 beta中).如果我用Air 3.1编译,一切正常.

我尝试了各种各样的东西,似乎无法在Air 3.2 +中修复它.我检查了我的其他项目,似乎我用Air 3.2编译的所有应用程序都有类似的问题:(

[UPDATE]

问题出在Flex SDK中的SkinnableTextBase.as中.

textDisplay_changeHandler(事件:事件)被调用,invalidateSkinState()引起的问题.如果您将皮肤的状态设置为空(""),它的工作原理如下:

skin.currentState = "";
invalidateSkinState();
Run Code Online (Sandbox Code Playgroud)

问题是主题没有正确更新(这是啊@ ck).

如果在CSS 中将"showPromptWhenFocused"设置为false,则问题不会发生; 唯一的副作用是,当您选择了textInput时,提示会消失.

s|TextInput
{
    skinClass:ClassReference("spark.skins.mobile.TextInputSkin");
    showPromptWhenFocused: false;
}
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人.