Keyboard 在SproutCore中捕获删除/退格键

Keyboard 在SproutCore中捕获删除/退格键,keyboard,keyboard-events,sproutcore,Keyboard,Keyboard Events,Sproutcore,我有一个SproutCore窗格,特别是PalettePane,其中包括一个绑定到屏幕上其他位置的对象的表单。窗格导致对象删除交互出现问题。我希望它的工作方式是: 如果文本输入字段处于焦点位置,则退格键/删除键应应用于这些字段(即编辑文本) 如果没有文本输入字段具有焦点,则backspace/delete键应删除与表单相关的选定对象。(当用户选择了一个对象时,会显示该窗格,因此如果该窗格存在,则会显示一个选定的对象。) 到目前为止,我有一种或另一种行为,从来没有两种都有过。如果我在窗格中设置

我有一个SproutCore窗格,特别是PalettePane,其中包括一个绑定到屏幕上其他位置的对象的表单。窗格导致对象删除交互出现问题。我希望它的工作方式是:

  • 如果文本输入字段处于焦点位置,则退格键/删除键应应用于这些字段(即编辑文本)
  • 如果没有文本输入字段具有焦点,则backspace/delete键应删除与表单相关的选定对象。(当用户选择了一个对象时,会显示该窗格,因此如果该窗格存在,则会显示一个选定的对象。)
到目前为止,我有一种或另一种行为,从来没有两种都有过。如果我在窗格中设置了
acceptsKeyPane:YES
,我将获得应用于文本字段的退格键/删除键,但当文本字段没有焦点时,不会删除所选对象。如果我使用
acceptsKeyPane:NO
,当我编辑文本字段并点击backspace时,它会删除我试图编辑的对象

雪上加霜的是,在带有
acceptsKeyPane:YES
的Firefox中,backspace键会被浏览器捕获,并被解释为后退按钮单击,这会让用户感到沮丧

我看过
root\u responder.js
代码,它看起来像SproutCore在Firefox中处理退格的方式不同,但是如果我能像上面所描述的那样处理退格,FF和其他浏览器之间的区别应该是没有意义的


ETA 2011年5月:阅读此处的答案时,请记住,1.5、1.6及以上版本的SproutCore API可能与此不同。

以下是我们最终完成此操作的方式:

  • 创建窗格时,我们对其调用了
    becomeFirstResponder()
  • 我们在其视图定义中添加了
    acceptsFirstResponder:YES
  • 然后,我们在视图定义中添加了:
向下键:功能(evt){ 返回此。解释键事件(evt)?是:否; }, deleteBackward:函数(){ this.get('objectToEdit').destroy(); 返回YES; }, deleteForward:函数(){ this.get('objectToEdit').destroy(); 返回YES; }
…这就成功了。

考虑在sproutcore@googlegroups.com或者是sproutcore的IRC频道。(如果我能提出一个建议,我也会在这里回答。)谢谢,彼得-我在IRC频道问了这个问题,听了蟋蟀的唧唧声。邮件列表是昨天才开始的,不是吗? 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; }