Flex 4.6 TextInput,提示ios行为不端

时间:2012-06-06 11:18:57

标签: ios flex prompt textinput autocorrect

在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"
                     />

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

是否有人知道此问题的解决方法?我查看了SkinnableTextBase类,但找不到任何有罪的代码。

此问题始于Flex 4.6。

3 个答案:

答案 0 :(得分:14)

在Flex代码中花了好几个小时之后,我终于意识到Flex不是问题所在。问题出现在 Air 3.2 (也在 Air 3.3 测试版中)。如果我使用 Air 3.1 进行编译,一切正常。

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

<强> [UPDATE]

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

调用 textDisplay_changeHandler(event:Event)时, invalidateSkinState()会导致问题。如果将皮肤的状态设置为空(“”),则可以正常工作:

skin.currentState = "";
invalidateSkinState();

问题是主题没有正确更新(而且它是一个h @ ck)。

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

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

希望这有助于某人。

答案 1 :(得分:3)

使用FB4.6和Air3.5的火花皮肤的Textinput解决了飞行问题。我认为实际问题来自Air。但是现在软键盘在聚焦时没有激活。

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

答案 2 :(得分: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移动设备外观。