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