【问题标题】:Issue with setFocus method of UIComponent in FlexFlex 中 UIComponent 的 setFocus 方法存在问题
【发布时间】:2023-04-11 01:14:02
【问题描述】:

我面临一个与 UIComponent 的 setFocus() 方法相关的问题。我有一个 textinput,我已经在应用程序的 creationComplete 上编写了 textInput.setFocus(),即

私有函数 onCreationComplete():void {

 // 1st approach     
 textInput.setFocus();

 // 2nd approach
 textInput.focusManager.setFocus(textInput); 
 textInput.focusManager.showFocus();

}

同时使用这两种方法时,我可以看到我的文本输入有一个光标,表明它已获得焦点。但问题是,除非我手动单击文本输入,否则它不会从键盘获得任何输入。

这种行为在 Flex 中是否正常,或者我正在使用的 Flash Player 是否有任何问题,或者浏览器是否有任何问题?

Flex SDK:4.1

浏览器和Flash播放器版本

  1. IE 9 和 Flash Player 调试器版本 11.3.300.257...
  2. Chrome 15.0.874.121 和 Flash Player 11.1.102.55...
  3. Firefox 20.0.1 和 Flash Player 11.9.900.117...

谁能告诉我是什么问题?任何意见都将受到高度赞赏!

【问题讨论】:

  • 好像很奇怪...你实际上使用的是旧版本的Flex SDK,你能更新到至少4.5吗?
  • 其实我无法升级。无论如何,如果我升级到 4.5 或 4.5+,你确定它会起作用吗?
  • 1.很抱歉这个问题,但您的输入可以编辑吗? 2.尝试将焦点设置为您的 input.textDisplay
  • Flex SDK 4.9 也有同样的问题。

标签: actionscript-3 apache-flex uicomponents


【解决方案1】:

试试这个,

private function onCreationComplete():void {

 textInput.setFocus();

 textInput.setSelection(0,0);

}

希望对你有帮助。

【讨论】:

  • 您使用的是 还是
  • 两者都试过了。实际上这不是 Flex SDK 或组件相关的问题。请通过此网址。 forums.adobe.com/thread/452365
【解决方案2】:

您正在将焦点设置到应用程序内的 TextInput,但是当加载网页时,Flash 应用程序没有焦点。这就是为什么您的应用没有收到任何键盘事件的原因。
尝试搜索如何在页面加载时将焦点设置在 Flash 应用上。

例子:
How do I make my flash object get focus on load?

【讨论】:

  • 我已经尝试过这种技巧。但不幸的是,它只适用于 IE,不适用于 FF 和 Chrome。
【解决方案3】:

试试这个。在mxml中你可以给

focusEnabled = 真

希望对你有帮助

【讨论】:

    【解决方案4】:

    这个适用于所有浏览器(IE、firefox 和 chrome) 在您的 index.template.html 文件中添加以下脚本块

    <script>
        function setFocusOnFlash() {
          var f=swfobject.getObjectById('yourFlashObjectId');
          if (f) { f.tabIndex = 0; f.focus(); }
        }
    </script>
    

    并在body标签中调用它

    <body onload="setFocusOnFlash()">    
    

    在你的 applicationCreationComplete 上放下面几行

    focusManager.setFocus(textInput); 
    textInput.focusManager.showFocus();
    

    【讨论】:

    • 这里的情况几乎相同。无论如何,你有没有在你的最后尝试过?因为它不适用于 FF 和 Chrome。仅在 IE 中工作。
    • 是的,它对我来说很好用。我有以下设置 Flex 4.10 sdk IE 11 和 Flash 调试器版本 11,9,900,117 Firefox 25.0.1 和 Flash 调试器版本 11,9,900,117 Chrome 31.0.1650.63 m 和 Flash 调试器版本 11,9,900,170 你能发布你的 index.template 的代码吗? html?
    • index.template.html的完整代码很难分享。所以分享几个代码sn-p。 我在 body 上有这个方法 onLoad。
    • 替换 index.template.html var f=swfobject.getObjectById("${application}"); 中的以下行*双引号代替单引号。我复制了你的代码并粘贴,它不起作用。改成双引号就可以了。
    • 试过了。但还是一样的结果。仅适用于 IE。
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2019-04-10
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多