Adobe air mobile - 使用skinClass允许滚动时,softKeyboardType不起作用?

时间:2012-03-27 18:29:08

标签: actionscript-3 mobile air adobe flash-builder

我正在尝试将softKeyboardType设置为电子邮件,但是当我使用skinClass =" spark.skins.mobile.TextAreaSkin"它没有改变它,但当我脱掉skinClass =" spark.skins.mobile.TextAreaSkin"它确实有效。问题是我需要skinClass =" spark.skins.mobile.TextAreaSkin"类允许我的应用程序滚动出来,文本不会留在文本输入框的边界。有没有人看到这个问题或另一个修复滚动问题?
代码示例

<s:TextInput softKeyboardType="email" id="id1" width="100%" skinClass="spark.skins.mobile.TextInputSkin" /> 
<s:TextArea softKeyboardType="email" id="id2" height="400" width="100%" skinClass="spark.skins.mobile.TextAreaSkin" />

感谢您的帮助,
贾斯汀

3 个答案:

答案 0 :(得分:2)

我已经在flex 4.6 sdk中检查了mobiletheme default.css adobe正在为TextInput和TextArea组件使用不同的外观

TextArea
{
    ...
    skinClass: ClassReference("spark.skins.mobile.StageTextAreaSkin");
}

TextInput
{
    ...
    skinClass: ClassReference("spark.skins.mobile.StageTextInputSkin");
}

所以我认为你应该使用StageTextAreaSkin或StageTextInputSkin作为相应组件的skinClass

softKeyboardType在这种情况下可以工作,但文本位置问题仍然存在,我认为你需要为滚动更改/修复StageTextAreaSkin或StageTextInputSkin来源

答案 1 :(得分:1)

面对这个问题,我提出了一个在我的案例中有效的解决方法。

使用默认外观,设置softKeyboardType。

在为屏幕做布局时,创建一个包含屏幕最上部分的部分,您可以轻松地折叠或切换其includeInLayout属性,因此当您这样做时,它会使您的TextInput或TextArea出现在键盘,为此目的绕过滚动条。

然后,当您的字段获得焦点时,在focusIn处理程序中,您可以折叠或切换此部分。这样做有两个好处:首先,它会在键盘上抬起你的场地;第二,它会从你的场地中移除焦点(至少在我的情况下它确实如此,不确定100%,如果没有,则手动移动焦点) 。这很好,因为当你再次将焦点设置在场上时(yourfield.setFocus()),光标将出现在你想要它的位置,在你的场的范围内。

完成输入后,您可以从focusOut或softKeyboardDeactivate处理程序将顶部恢复到其原始状态。

希望这会有所帮助......

答案 2 :(得分:0)