5

在 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 时,提示按预期消失,但第一个字符是自动选择的。当第二个键被按下时,第一个字符被删除。这只发生在输入第一个字符并且该字段有提示消息时。“自动更正”似乎没有做任何事情。

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

这个问题从 Flex 4.6 开始。

4

3 回答 3

14

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

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

[更新]

问题出在SkinnableTextBase.asFlex SDK中的某个地方。

当调用textDisplay_changeHandler(event:Event)时,invalidateSkinState()会导致问题。如果您将皮肤的状态设置为空(“”),它会起作用:

skin.currentState = "";
invalidateSkinState();

问题是主题没有正确更新(它是 ah@ck)。

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

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

希望这可以帮助某人。

于 2012-06-07T09:50:44.263 回答
3

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

<s:TextInput id="mail"  softKeyboardType="email" skinClass="spark.skins.spark.TextInputSkin" />
于 2012-12-20T06:36:34.747 回答
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 移动皮肤。

于 2012-06-18T04:14:20.053 回答