我有一个 SproutCore 窗格——特别是一个 PalettePane——它包括一个绑定到屏幕上其他位置的对象的表单。窗格导致对象删除交互出现问题。我希望它的工作方式是:
- 如果文本输入字段处于焦点,退格/删除键应应用于这些字段(即编辑文本)
- 如果没有文本输入字段具有焦点,则退格/删除键应删除与表单相关的选定对象。(当用户选择了一个对象时,窗格就会出现,所以如果窗格存在,那么就有一个选定的对象。)
到目前为止,我得到这些行为中的一种或另一种,从来没有两者兼而有之。如果我acceptsKeyPane: YES
在窗格中设置,我会获得应用于文本字段的退格/删除键,但当文本字段没有焦点时不会删除所选对象。如果我使用acceptsKeyPane: NO
,当我编辑文本字段并按退格键时,它会删除我试图编辑的对象。
雪上加霜的是,在 Firefox 中,带有acceptsKeyPane: YES
退格键的浏览器会捕获并解释为后退按钮单击,这会让用户感到沮丧。
我查看了root_responder.js
代码,看起来 SproutCore 为 Firefox 处理退格键的方式不同,但如果我可以如上所述处理它们,那么 FF 和其他浏览器之间的区别应该没有实际意义。
ETA 2011 年 5 月:在此处阅读答案时请记住,用于 1.5、1.6 及更高版本的 SproutCore API 可能与此不同。