- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
哪些选项可用于使用Adobe AIR在Android上处理文本输入?每个选项的优缺点是什么?
最佳答案
Android上的AIR开发人员可用于处理文本输入的当前选项包括:
StageText本机文本(默认)
TextInputSkin(spark.skins.mobile)
TextInputSkin(spark.skins.spark)
StageText + TextInputSkin(spark.skins.mobile)混合
StageWebView(下面说明)
本机视图
我将在下面讨论每种方法的一些优点和缺点。如果我错过了任何事情(或者您有其他未曾想到的想法),请告诉我!
StageText
在所有情况下都能正确处理输入? 是
在所有情况下都能正确显示? 否
滚动时出现垂直对齐问题。
默认情况下,在移动设备上运行的TextInputs使用StageText(本机文本)进行输入。 StageText具有Adobe概述in their online documentation的多个优点,包括自动更正,自定义软件键盘等。
bugbase ticket 3302441中描述了使用StageText的最大缺点。用户滚动时,StageText的位置会损坏。文本字段出现在其各自的TextInputs之外,或更糟的是出现在其他TextInputs的内部。解决此缺陷的唯一方法是设计一个不允许滚动的UI。显然,这对于手机和平板手机可能非常困难。
TextInputSkin(spark.skins.mobile)
在所有情况下都能正确处理输入? 是
在所有情况下都能正确显示? 否
在某些Android版本(例如运行Android 2.3的Nook)上插入随机字符。
该组件在内部使用StyleableTextField。针对移动应用进行了优化。
当用户在某些Android版本(例如,运行Android 2.3的Nook,运行Android 4.0的Kindle HD)上键入内容时,此组件会在TextInput中插入其他任意字符。请参见bugbase ticket 3547601。
如果您的应用程序仅本地化为英语(或基于拉丁语的语言),并且不需要支持较旧的Android版本,则此组件可能对您来说效果很好。
TextInputSkin(spark.skins.spark)
在所有情况下都能正确处理输入? 否
不接受某些双字节字符(例如韩语)。
在某些设备(例如运行Android 4.0的Samsung Galaxy 10.1)上不接受任何输入。
在所有情况下都能正确显示? 是
该组件在内部使用RichEditableText。尚未针对移动应用进行优化。除此之外,它还显示出一些缺陷(上面列出),这些缺陷使其不适合使用。
此组件不能正确处理某些双字节字符(使用韩语等语言)。这些字符似乎已插入到TextInput中(光标在前进),但是没有文本呈现给用户。 (有可能使用嵌入式字体解决了此问题。)请参见bugbase ticket 3547591。
在测试上述第三项(某些设备上不接受输入)时,发现了一件有趣的事情。输入几个字符后,如果用户将焦点切换到使用默认StageText的TextInput,则至少某些缺少的字符将自动插入到新字段中。
StageText + TextInputSkin(spark.skins.mobile)混合
在所有情况下都能正确处理输入? 是
在所有情况下都能正确显示? 否
有时,软件键盘的“显示”动画会连续触发两次,从而产生不良的视觉效果。
有时,焦点处理很困难,并且可能导致StageText-TextInput在没有软件键盘的情况下显示,直到学习者再次触摸它为止。
这种方法将StageText的优点与TextInputSkin的滚动功能(spark.skins.mobile)结合在一起。通常的想法是创建1个使用StageText的TextInput并将其分配到屏幕上的固定位置。默认情况下,应隐藏此TextInput。可以根据需要在舞台上创建其他TextInput(使用TextInputSkin)并将其定位。当这些TextInput中的一个获得焦点时,应显示隐藏的替代TextInput并将焦点移至该替代。在将文本输入到代理中时,更改处理程序应将文本复制到用户选择的TextInput中。当用户使用Tab键单击或单击以将焦点设置在其他位置时,替代TextInput应该再次隐藏。
如果需要,我可以提供一个代码示例。这种方法(上面提到)有两个缺点,但有可能是我实现的错误。
StageWebView
在所有情况下都能正确处理输入?
是/否
根据<renderMode>
和<fullscreen>
的值,此组件可能会为您正常工作。
开始工作有点棘手。
在所有情况下都能正确显示? 是
此方法涉及使用StageWebView在AIR应用程序中显示一个简单的HTML页面。 HTML页面包含<input type="text">
对象,这些对象使用Android的本机文本和软件键盘。在HTML页面和父AIR应用程序之间进行通信有些棘手,因为StageWebView不支持与ExternalInterface相同的Flash到JavaScript的通信。
从JavaScript到Flash进行通讯
从JavaScript(或HTML)到ActionScript进行通信非常困难,因为StageWebView不允许ActionScript添加回调。 StageWebViewBridge提供此功能的时间尚未更新,当我尝试使用它时,无法使用Flex 4.6和AIR 3.5来显示内容。
仍然存在使用LocationChangeEvent将信息传递到ActionScript的方法。这背后的想法是让AIR应用程序侦听位置更改事件,然后解析传入的event.location
以获取信息。对于简单的链接,这很容易工作,但在表单方面则变得更加复杂。在解决一个问题之前,我尝试了以下方法:
将onclick处理程序添加到表单提交按钮,该按钮将window.location.href
设置为包含URL编码键/值对的字符串。由于bugbase ticket 3362483中所述的原因,此方法不起作用。
向表单提交按钮添加一个onclick处理程序,该按钮可动态修改表单目标以包含URL编码的键/值对,然后提交表单。此方法行不通,因为在调用form.submit()时未调度LocationChangeEvents。
将onchange处理程序添加到<input type="text">
标记,并修改“提交”链接的href
属性以包含URL编码的键/值对。单击此链接后,将调用您的ActionScript LocationChangeEvent处理程序,并且您可以使用URLVariables类解析传入的数据。
从Flash到JavaScript进行通讯
要与JavaScript通信(调用方法,传递参数),请使用StageWebView's loadURL method,如下所示:
_stageWebView.loadURL( 'javascript:yourMethodName( "A string", true )' );
<renderMode>direct</renderMode>
或
<fullscreen>true</fullscreen>
,则无法通过StageWebView输入文本。 (响应将很慢。用户将无法选择或删除字符。)如果您的应用程序不需要这些标志中的任何一个,则此路线可能对您来说效果很好。
// Turn off fullscreen
stage.displayState = StageDisplayState.NORMAL;
// Turn on fullscreen
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
关于android - 哪些选项可用于使用Adobe AIR在Android上处理文本输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15840504/
我有一个测试即将进行,我想澄清两个有关参数的问题。 在我的笔记中指出,将参数传递给函数的推荐方法是使用“按引用传递” const type& x; // for "in" parameters
当我通过 OMG 2.5(Beta)推广的 UML 规范阅读以下概念时: in: Indicates that Parameter values are passed in by the caller
我试图在用户按下 Enter 时触发一个函数。我将此输入设置为只读的原因是限制用户在填充值后修改输入中的值。 该值来自将在点击属性中触发的弹出窗口。问题是 keyup.enter 没有触发该输入。 代
我在jQuery中使用模式弹出窗口控件,该弹出窗口具有由jQuery Tokenize输入插件提供动力的输入文本。问题是,当我在模式弹出文本框中键入内容时, token 化插件的搜索结果显示为隐藏在弹
我有一个问题。当我选中复选框时,系统工作正常,总值发生变化,但一旦我修改文本输入,它就会变为 0。我需要将此文本框输入排除在更改值之外。 这是 html: $15000 $
我正在努力让它发挥作用,但还是有些不对劲。 我想用 CSS 设置提交按钮的样式以匹配我已有的按钮。 风格: input[type="button"], input[type="submit"], b
import java.util.*;; public class selection { Scanner in=new Scanner(System.in); private
这可能是一个非常菜鸟的问题。假设我有一个带宽限制为 100MB/s 的网卡,那么输入/输出带宽是否有可能达到该限制 同时 ?或者我会在任何时候遇到这个不等式:in bandwidth + out ba
看着这个问题,Fill immutable map with for loop upon creation ,我很好奇是什么this表示在 Map(1 -> this) . scala> Map(1
我有这样的东西 一个 乙 问? 是或否 数字 数字或零 我想做的是: 如果 B1 = “Y”,则让用户在 B2 中输入一个数字。 如果 B1 = “N”,则将 B2 中的值更改为零,并且不允许用户在
我有一个包含许多列的表,我想添加 input标题单元格内的字段,但我希望输入适合根据正文内容的宽度。 这是没有 input 的样子领域: 这就是 input 的样子领域: 可以看出,像“index”和
关于为 FTP 客户端设置传出和传入文件夹,您遵循哪些最佳实践(如果有)?我们通常使用“outgoing”和“incoming”,但无论你如何表述方向,它都可以有两种解释方式,具体取决于名称相对于哪一
我正在尝试“求解”给定 d 的 Pell 方程:x^2 - d * y^2 = 1,或者至少我想得到最小的 x > 0 来求解方程。到目前为止,一切都很好。这是我的 Haskell 代码 minX :
我是VS Code的新手,可以使用Ctrl + Enter将代码运行到python交互式窗口中。我希望光标自动移动到下一行,因此我可以逐行浏览代码。 能做到吗? 最佳答案 如this blog pos
我正在创建一个 bool 值矩阵/二维数组,并且我想为 dategrid 推断一种不仅仅是“ANY”的类型。 let yearRange = [2000,2001,2002,2003,2004]; l
我有两个排序的列表,例如 a = [1, 4, 7, 8] b = [1, 2, 3, 4, 5, 6] 我想知道a中的每个项目是否在b中。对于上面的示例,我想找到 a_in_b = [True, T
菜鸟警报 这很奇怪 - 当我编写以下代码时,尝试在 AngularJS 中创建自定义指令: myModule.directive('myTab', function(){ console.lo
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
假设我正在使用 gdscript 静态类型,并且对于一个函数参数,我事先不知道我会得到什么。这就是 python 中 typing.Any 的作用。如何使用 gdscript 做到这一点? 似乎 Va
我使用 dropzone 上传多个图像,并且工作正常,直到我想为每个图像插入品牌和网址。 我遇到的唯一问题是,当我要从输入字段获取值时,我会从服务器获取来自字段(品牌、网址)的未定义值,但如果我使用静
我是一名优秀的程序员,十分优秀!