我正在使用 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 中使用的方法,但它们没有不工作.. 还有其他功能使用相同的 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 中的 StageText
,如下所示:
stageText.assignFocus();
StageText
提供了许多优于 TextField
的优势,因为它显示了 native 文本输入。我知道的唯一缺点是您不能使用自定义字体。
这是 documentation , 和一个 tutorial .
我还没有尝试过“完成”键,但我用“回车”键做了你想要实现的,而且它起作用了。另请注意,在 iOS 中,“完成”键用于隐藏键盘,因此这可能就是您遇到这些问题的原因..
关于ios - AS3/Air 将焦点从一个文本字段转移到 ios 中的下一个文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19162573/