У меня есть панель SproutCore, в частности PalettePane, которая включает форму, привязанную к объекту в другом месте экрана. Панель вызывает проблемы с взаимодействием удаления объекта. Я хочу, чтобы это работало:
- Если поле ввода текста находится в фокусе, клавиши возврата / удаления должны применяться к этим полям (т. Е. Редактировать текст)
- Если поле ввода текста не имеет фокуса, клавиши возврата / удаления должны удалять выбранный объект, связанный с формой. (Панель появляется, когда пользователь выбрал объект, поэтому, если панель существует, это выделенный объект.)
Пока что я получаю одно или другое, а не оба. Если я установлю acceptsKeyPane: YES
на панели, я получу клавиши возврата / удаления, применяемые к текстовым полям, но не удаляю выбранные объекты, когда текстовые поля не имеют фокуса. Если я использую acceptsKeyPane: NO
, когда я редактирую текстовое поле и нажимаю клавишу Backspace, он удаляет объект, который я пытался редактировать.
Чтобы добавить оскорбление к травме, в Firefox с acceptsKeyPane: YES
клавиша Backspace перехватывается браузером и интерпретируется как нажатие кнопки «назад», что будет неприятно для пользователя.
Я посмотрел на код root_responder.js
и похоже, что SproutCore по-разному обрабатывает возвратные пространства для Firefox, но если я могу их обработать, как описано выше, различие между FF и другими браузерами должно быть спорным.
ETA, май 2011 г. При чтении ответов на этот вопрос имейте в виду, что API-интерфейс SproutCore для версий 1.5, 1.6 и выше может не совпадать с этим.