【问题标题】:AS3/Air Shift focus from one text field to the next in iosAS3/Air 将焦点从一个文本字段转移到 ios 中的下一个文本字段
【发布时间】:2013-10-03 15:01:25
【问题描述】:

我正在使用 Flash Pro cs6、AS3、Air3.8.. 我正在使用文本字段进行输入。我正在努力做到这一点,所以当用户按下“完成”时,它会转移到下一个字段。我在所有论坛上都发现了相互矛盾的信息,包括这个。我做了搜索,但从未找到修复.. 我肯定收到了这些事件,我尝试添加一个标识键码的行,这已确认它正在接收键码 13。我实际上将键码放入我希望焦点成功转移的字段中。它只是拒绝把重点放在那个领域..

我正在使用的代码在文档中说明它不能在 iOS 中运行。但它确实可以在同一脚本页面以及另外两个脚本页面上进一步工作......我有:

stage.addEventListener(KeyboardEvent.KEY_DOWN,keyhandler);


function keyhandler(event:KeyboardEvent){
if(event.charCode == 13)
{
stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyhandler);
stage.focus = null;
stage.focus = nextTextField;
}
}

我先尝试将侦听器添加到文本字段,然后将其更改为舞台,但均无效。我尝试了“requestsSoftKeyboard”和其他几种我看到的在 iOS 中发布的方法,但它们没有t 工作.. 还有其他功能使用相同的 stage.focus 为 null,然后将 stage.focus 用于 MyTextField 并且它们可以工作,但它们是通过按下舞台上的按钮而不是软键盘上的按钮来启动的。那里的代码只是一个标准的 if 语句:

if (TextField == "")
{
stage.focus=null;
stage.focus=TextField;
}else if (NextTextField == "")
{
stage.focus = null;
stage.focus = NextTextField;
}else if (TextFieldAfterThat == "")
{
stage.focus = null;
stage.focus = TextFieldAfterThat;
}

这会继续遍历所有字段,并且始终在软键盘打开、光标闪烁并准备好输入的情况下转到右侧……每次。我知道听众是从软键盘“完成”接收的,因为大写单词的功能有效,并且当我添加代码以确认键码时它有效。我还发现使用“charcode”和“keycode”访问该值..我不知道有什么区别,但都返回 13 并且都不适合我.. 在另一个地方,我使用相同的代码使 TextField 处于活动状态并在用户按下单选按钮后设置焦点,并且每次都有效。

我不确定按下“完成”与按下舞台上的对象有什么区别,但它拒绝使用完成按钮设置焦点。 有人有任何想法或以前做过这项工作吗?

【问题讨论】:

    标签: ios actionscript-3 air focus textfield


    【解决方案1】:

    我成功地将焦点分配给 iOS 中的 StageText,如下所示:

    stageText.assignFocus();
    

    StageTextTextField 具有许多优势,因为它显示了本机文本输入。我知道的唯一缺点是您不能使用自定义字体。

    这是documentationtutorial

    我还没有尝试过“完成”键,但我用“Enter”键完成了您想要实现的目标,并且成功了。另请注意,在 iOS 中,“完成”键用于隐藏键盘,这可能就是您遇到这些问题的原因..

    【讨论】:

    • 是的..我看过stageText..我最初为Android编写了应用程序,现在正在尝试做iOS。我希望不必重写所有的文本字段,因为有这么多。 “完成”键触发与“输入”时相同的“13”值......我想我最终可能不得不将它们全部切换到 stageText,但如果有人有任何其他建议,我很乐意听到。
    • 如果您使用StageText 路由,最简单的方法是编写自己的包装器,只需将经典文本字段的类更改为StageTextWrapper。是的,您必须使用 getter/setter 编写包装器,但您可以保持以前的代码几乎完好无损。
    • 那是真的..我将不得不调查一下...谢谢。你玩过 Christians NativeText 包装器吗?我正在尝试决定是否可以节省使用它的时间,或者我是否应该自己编写...
    • 我没有使用 Christian 的(我自己写的),但我在 Github 上看到了代码。如果它不符合您的目的,它至少应该是一个很好的起点。似乎主要的 TextField 属性已经被 getter/setter 处理了。
    • 如果您觉得我的回答有帮助(即使它不正确),您至少可以投赞成票;)
    【解决方案2】:

    使用组件 FPTextField 你可以监听事件点击完成。在本视频中,比较了 StageText 和 FPTextField:http://www.youtube.com/watch?v=BKYaoLtEmCU

    使用一个库 FPNativeUI:http://flashpress.ru/blog/ane/native-ui/?lang=en

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-30
      • 2019-02-08
      • 1970-01-01
      • 2010-11-09
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多