Flex中UIComponent的setFocus方法问题

时间:2013-12-10 06:39:08

标签: actionscript-3 flex uicomponents

我面临一个与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 Player版本

  1. IE 9与Flash Player调试器版本11.3.300.257 ...
  2. Chrome 15.0.874.121 with Flash Player 11.1.102.55 ...
  3. Firefox 20.0.1 with Flash Player 11.9.900.117 ...
  4. 任何人都可以让我知道这是什么问题?任何意见都将受到高度赞赏!

4 个答案:

答案 0 :(得分:0)

试试这个,

private function onCreationComplete():void {

 textInput.setFocus();

 textInput.setSelection(0,0);

}

希望它有所帮助。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

试试这个。在mxml中,您可以提供

focusEnabled = true

希望它会有所帮助

答案 3 :(得分:0)

这个适用于所有broswers(IE,Firefox和Chrome) 在index.template.html文件中添加以下脚本块

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

并将其称为onload in body tag

<body onload="setFocusOnFlash()">    

在你的applicationCreationComplete上添加以下行

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