我有一个SproutCore窗格 - 一个PalettePane,特别是 - 它包含一个绑定到屏幕上其他位置的对象的表单。窗格导致对象删除交互出现问题。我想要它的工作方式是:
到目前为止,我得到了其中一种行为,而不是两种行为。如果我在窗格中设置acceptsKeyPane: YES
,我会将退格/删除键应用于文本字段,但是当文本字段没有焦点时,不会删除所选对象。如果我使用acceptsKeyPane: NO
,当我正在编辑文本字段并点击退格时,它会删除我尝试编辑的对象。
为了增加侮辱伤害,在acceptsKeyPane: YES
的Firefox中,退格键被浏览器捕获并被解释为后退按钮点击,这对用户来说是令人沮丧的。
我查看了root_responder.js
代码,看起来SproutCore对Firefox的退格处理方式不同,但如果我能按上述方法处理它们,那么FF和其他浏览器之间的区别应该没有实际意义。
ETA 2011年5月:在此处阅读答案时请记住1.5,1.6及更高版本的SproutCore API可能与此不同。
答案 0 :(得分:3)
以下是我们最终如何做到这一点:
becomeFirstResponder()
。acceptsFirstResponder: YES
。keyDown: function(evt) { return this.interpretKeyEvents(evt) ? YES : NO; }, deleteBackward: function() { this.get('objectToEdit').destroy(); return YES; }, deleteForward: function() { this.get('objectToEdit').destroy(); return YES; }
......这就是诀窍。