这适用于AIR 3.1上的Flex 4.6。我在AIR 3.5中也遇到了同样的问题。
在我正在处理的应用程序中,我遇到了textInputs和textareas中的文本问题,这些文本在视图之间停留在屏幕上,同时滚动等等。
我看到的修复建议是为textinput和textarea使用不同的skinclass:
skinClass="spark.skins.spark.TextAreaSkin"
Adobe Flex Mobile - TextArea refuses to scroll on Android, StageWebView won't scroll at all是使用TextAreaSkin的其中一个建议的示例。
但是,当使用它和等效的TextInputSkins时,我现在遇到了一些非常重要的问题。
在iPad 2(iOS6)上我们使用的软键盘根本不会出现,在我们的三星Galaxy平板电脑(Android 4)上,键盘只允许输入数字和某些特殊字符(如果在我按住一个特定的字母,但不是正常打字时)。
我在这里发现了另一个与我类似的问题: http://forums.adobe.com/message/4078890但它没有解决方案。
奇怪的是,我的Android(Desire)手机上的一切正常,或者如果我在三星Galaxy平板电脑上使用不同的键盘应用程序(Swiftkey),那么它也能正常工作。
我已经在我们的其他应用中对此进行了测试,并且在那个应用中遇到了同样的问题。 (我必须使用该应用程序的皮肤的唯一实例是不可编辑的textareas - 我从未看到我在该应用程序中提到的第一个问题。)
编辑:我已经创建了一个相当基本的演示,其中包含一些观点,我已经复制了我遇到的大部分问题。它是一个使用splitview导航器的移动应用程序。 主要申请文件:
<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>
TestView:
<?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>
TestView2:
<?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上的主要文本区域应用了skinclass,对我来说有以下问题:
iOS(iPad2):根本没有softKeyboard。
Android(三星Galaxy Tab):键盘出现但只允许数字和某些特殊字符
我无法重现问题(没有其他皮肤类),文字停留在屏幕上,但在Android上,如果您在“TestView”的文本框中键入内容并单击“下一屏幕”,TestView中的文本将会视图加载后消失(直到您单击文本框)。如果你有一个足够长的屏幕滚动文本框会导致很多问题,如果你不使用其他皮肤类。
答案 0 :(得分:2)
好的,我发现了我的问题。最终变成了一个非常简单的。
我使用的是错误的皮肤。有一个特定的移动皮肤叫做:
spark.skins.mobile.TextInputSkin
它还没有完美地工作,但我实际上有一些工作的事实是一种解脱大声笑。
答案 1 :(得分:1)
当我们需要在移动设备中为TextInput和TextArea设置外观时,我们需要子类化默认的spark.skins.mobile.MobileSkin(或MobileTextInputSkin),因为使用Actionscript的Mobile skin与默认的MXML外观相比是轻量级的外观。如果你使用MXML为TextInput和TextArea设置外观,在三星的手机和平板电脑(不使用默认的谷歌Android键盘)等设备上,你会遇到输入聚焦时SoftKeyboard不会出现的问题。
另一件事是:我们永远不应该在TextInput和TextArea上使用 restrict 属性,否则,我们将得到文本保持相互覆盖的错误。 希望这个帮助,Rjs37
答案 2 :(得分:0)
我为StageTextAreaSkin和StageTextInputSkin创建了一个解决方法,可以在Scroller中使用这些皮肤。如果您想要使用TextInputSkin的唯一原因是支持滚动,这应该有所帮助。它可以在GitHub上找到:
https://github.com/lizardon/TouchScrollStageText
它的工作原理是对StyleableStageText类进行更改,以侦听触摸事件和位置更改到祖先Scroller组件。
希望Apache能尽快解决这个问题,并且不需要解决方法。