gpt4 book ai didi

apache-flex - 移动设备上的 Flex TextArea 和 TextInput 定位不正确

转载 作者:行者123 更新时间:2023-12-01 10:57:25 25 4
gpt4 key购买 nike

在移动组件上使用 TextArea 和 TextInput 时,我遇到了两个问题,我不知道如何解决。第一个是 TextArea 文本定位不正确,第二个是它与其他组件重叠。

当 TextArea 在 Scroller 中(或软键盘激活并移动 TextArea 位置)时,会出现问题。

如果将下面的代码添加到移动应用程序中,您可以看到这一点:

<s:Scroller width="100%" height="100%" top="100" bottom="100">
<s:VGroup width="50%">
<s:Button label="" height="600" width="440"/>
<s:TextArea id="testing" />
<s:TextArea id="testing2" />
<s:Button label="" height="800" width="440"/>
</s:VGroup>
</s:Scroller>

第一个图像是带有一些文本的应用程序。

enter image description here

在第二张图片中,我向下滚动了一些。当我向下滚动时,请注意文本仍保留在同一个位置(它位于其上方按钮的顶部)!

enter image description here

警告:
如果我抛出 View ,那么文本会立即定位到正确的位置(在 AIR 模拟器上),并在内容进入其最终位置时再次正确定位(在移动设备上,文本似乎会消失,直到它到达最终位置)。这是个好消息,因为在手动按下、拖动和释放(不是 throw )或激活软键盘时不会发生某些事情。

不幸的是,文本可能仍然出现在所有其他内容的顶部而忽略了滚动条掩码,但如果第一个问题得到解决,我可以接受。

更新
如果我将宽度设置为宽度 + 1,我可以让文本重新定位到正确的位置。这是行不通的,因为我显然不想调整它的大小。我尝试使无效,但没有任何效果。这是我在 softKeyboardActivating 事件中尝试的代码。取消注释 width = width+1 以查看它是否“有效”:

    <s:TextArea id="testing" softKeyboardActivate="testing_softKeyboardActivateHandler(event)"/>

<fx:Script>
<![CDATA[
import mx.core.IInvalidating;
protected function testing_softKeyboardActivateHandler(event:SoftKeyboardEvent):void {
trace("Activating");
/*testing.invalidateProperties();
testing.invalidateDisplayList();
testing.invalidateSize();
testing.validateNow();
parentGroup.validateNow();
scroller.validateNow();*/
// testing.invalidateParentSizeAndDisplayList();
//IInvalidating(testing.parent).invalidateSize();
//IInvalidating(testing.parent).invalidateDisplayList();
//testing.width = NaN;
//testing.width = testing.width+1;
}
]]>
</fx:Script>

更新 2:
这段代码有效,但它是一种 hack,它比抛出 View 时滚动条使用的代码慢得多:

protected function testing_softKeyboardActivateHandler(event:SoftKeyboardEvent):void {
StageTextAreaSkin2(testing.skin).styleChanged("styleName");
}

更新 3
我在下面的答案部分添加了一个解决方法,但这是一个 hack。此外,当它处于正确的位置时,它也会被正确地遮盖。所以这也很好。但是,我仍在寻找正确的方法来做到这一点。

这已经在 Mac 上的 AIR 模拟器、iPhone 5 和 Android Nexus 7 上使用 Flex 4.6、AIR 3.5 进行了测试。

最佳答案

这是 Flex 中的一个错误,与 native 文本控件有关。如果您在顶级应用程序中包含以下内容,问题就解决了:

<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
@namespace local "*";
s|TextInput {
skinClass: ClassReference("spark.skins.mobile.TextInputSkin");
showPromptWhenFocused:false;
}
s|TextArea {
skinClass: ClassReference("spark.skins.mobile.TextAreaSkin");
}
</fx:Style>

关于apache-flex - 移动设备上的 Flex TextArea 和 TextInput 定位不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14412301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com