我有一个视图堆栈,该视图实现了用于执行新订单的“向导”界面。在向导的最后一页上,有一个按钮,上面有一个假冒的加速器,如果按下'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中都无法取消。