我有一个视图堆栈,该视图实现了用于执行新订单的“向导”界面。在向导的最后一页上,有一个按钮,上面有一个假冒的加速器,如果按下'o',他们可以通过该按钮重新开始该过程。

以下是我的处理程序:

        protected function _keyDownHandler(e:KeyboardEvent):void
        {
            if((e.charCode == 111)) {
                // stop the 'o' from getting out
                trace("Cancelable : " , e.cancelable);
                this.removeEventListener(KeyboardEvent.KEY_DOWN, _keyDownHandler, true);
                e.stopImmediatePropagation();
                e.preventDefault();
                model.orderNew();
            }

        }


问题在于,当用户返回向导的第1页时,现在将刚刚键入用户的'o'输入到数据网格过滤文本框中(按以'o'开头的姓氏进行过滤),这不是所希望的。

如您所见,我已经做了一些尝试来禁止这种交互,但是即使model.orderNew()位包含用于交换视图堆栈页面的所有代码,并将焦点重新设置为txtSearchFilter,它似乎还是不够的等等...我很困!

看来e.cancelable == false,这可能是我得到这种行为的原因..但是文档说KEY_DOWN是可取消的,所以...我仍然迷路。

如何防止按键传播到表格中?

谢谢

最佳答案

看看这个线程:

http://forums.adobe.com/thread/434862

看来KEY_DOWN和KEY_UP事件在Flash Player中都无法取消。

10-07 14:33