在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。
答案 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移动设备外观。