【问题标题】:Focus issues, focus sometimes goes to unknown object焦点问题,焦点有时会转到未知对象
【发布时间】:2009-02-12 14:50:34
【问题描述】:

[FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=null shiftKey=false keyCode=0]

当我用鼠标单击 TextField 时,我希望另一个(可编辑)字段获得焦点,但当前焦点在某处丢失。我不知道焦点在哪里。

我为 textfield 创建了一个侦听器,它试图将焦点设置回另一个带有 stage.focus = editfield 的字段,但它不起作用。

我在舞台上也有相同的焦点监听器,但没有区别。

【问题讨论】:

    标签: actionscript-3 flex3


    【解决方案1】:

    由于您在示例中列出了“FocusEvent”,因此我将重点介绍 Flex 解决方案。那不是 Flash AS3 类。

    我敢打赌,Flex 正在尝试自己管理焦点,而这与您设置焦点的尝试搞砸了。但是,有很多方法可以解决这个问题。

    Flex 是否试图与您作对?
    首先,您可能希望使用 FocusManager 类或 UIComponent setFocus 方法(这取决于您具体需要做什么,我相信 FocusManager 允许您有多个目标对象,而 setFocus 方法要简单得多)而不是舞台焦点。这有利于在 Flex 组件系统中本地工作。

    您是否听对了活动?
    如果做不到这一点,请尝试确保您正在寻找的 FocusEvent 的目标既不是您的文本字段也不是您的文本字段的子项。 (只是为了理智)。如果这不起作用,请确保您只派发一次事件。接下来,我会尝试使用 MouseEvent.CLICK 而不是 FocusEvent。

    其他一切都失败了吗?
    不幸的是,Flex 通常远非完美。我发现有时我必须使用 setTimeout 来解决它不会以“正确的顺序”触发事件的事实——你调整了某些东西的大小,但是在重新渲染之前调度了“RESIZE”,你改变了字体,并且 TextArea 的 TextWidth 属性不返回正确的数字。解决方法

    private function myListener( event:FocusEvent ):null
    {
        setTimeout( function(){ editfield.setFocus(); }, 35 );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-07
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      相关资源
      最近更新 更多