这适用于 AIR 3.1 上的 Flex 4.6。我在 AIR 3.5 中也遇到了同样的问题。
在我目前正在开发的应用程序中,我遇到了来自 textinputs 和 textareas 的文本在视图之间停留在屏幕上的问题,同时滚动等。
我看到的修复建议是为 textinput 和 textarea 使用不同的皮肤类:
skinClass="spark.skins.spark.TextAreaSkin"
Adobe Flex Mobile - TextArea 拒绝在 Android 上滚动,StageWebView 根本不会滚动是使用 TextAreaSkin 的这些建议之一的示例。
但是,在使用它和等效的 TextInputSkins 时,我现在遇到了一些相当大的问题。
在 iPad 2 (iOS6) 上,我们使用的软键盘根本不会出现,而在我们的三星 Galaxy 平板电脑 (Android 4) 上,键盘将只允许输入数字和某些特殊字符(如果我按住它也允许输入大写字母在特定的字母上,但在正常输入时不会)。
我在这里发现了另一个与我类似的问题: http ://forums.adobe.com/message/4078890但它没有解决方案。
奇怪的是,在我的 Android (Desire) 手机上一切正常,或者如果我在三星 Galaxy 平板电脑上使用不同的键盘应用程序 (Swiftkey),那么它也可以正常工作。
我已经在我们的另一个应用程序中对此进行了测试,并且在该应用程序中遇到了相同的问题。(我必须为该应用程序使用皮肤的唯一情况是不可编辑的文本区域 - 我从未见过我在该应用程序中提到的第一个问题)。
编辑:我创建了一个相当基本的演示,其中包含一些视图,其中我复制了我遇到的大部分问题。这是一个使用拆分视图导航器的移动应用程序。主要申请文件:
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<!-- Split View Navigator used for Tablet for panelled functionality -->
<s:SplitViewNavigator width="100%" height="100%">
<s:layout.landscape>
<s:HorizontalLayout />
</s:layout.landscape>
<s:layout.portrait>
<s:VerticalLayout />
</s:layout.portrait>
<s:ViewNavigator width.landscape="35%" height.landscape="100%"
width.portrait="100%" height.portrait="30%"
firstView="views.TestView" />
<s:ViewNavigator width="100%" height="100%" height.portrait="100%"
firstView="views.TestFormHomeView" />
</s:SplitViewNavigator>
</s:Application>
主页视图:
<fx:Script>
<![CDATA[
protected function buttonClick():void
{
navigator.pushView(TestView2);
}
protected function listClick():void
{
navigator.popView();
navigator.pushView(TestFormHomeView);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Scroller width="100%" height="100%">
<s:HGroup width="100%">
<s:List width="50%" click="listClick()">
<s:ArrayCollection>
<fx:String>Test1</fx:String>
<fx:String>Test2</fx:String>
<fx:String>Test3</fx:String>
<fx:String>Test4</fx:String>
<fx:String>Test5</fx:String>
</s:ArrayCollection>
</s:List>
<s:VGroup width="50%">
<s:TextArea id="testing" skinClass="spark.skins.spark.TextAreaSkin" />
<s:TextArea id="testing2" />
<s:Button click="buttonClick()" label="Next Screen" />
</s:VGroup>
</s:HGroup>
</s:Scroller>
</s:View>
测试视图:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" title="TestView">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:TextArea id="testing2" />
</s:View>
测试视图2:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" title="TestView2">
<fx:Script>
<![CDATA[
protected function goBack():void
{
navigator.popView();
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:layout>
<s:VerticalLayout />
</s:layout>
<s:TextArea id="testing2" />
<s:Button label="Back" click="goBack()" />
</s:View>
HomeView 上的主要文本区域应用了皮肤类,这对我来说有以下问题:
iOS (iPad2):根本没有软键盘。
Android(Samsung Galaxy Tab):键盘出现但只允许数字和某些特殊字符
我无法重现问题(没有其他皮肤类),文本留在屏幕上,但在 Android 上,如果您在“TestView”上的文本框中键入内容并单击 Next Screen,TestView 中的文本将在视图已加载(直到您单击文本框)。如果你的屏幕足够长,如果你不使用其他皮肤类,那么滚动文本框会导致很多问题。