2010-03-19 2 views
1

Есть ли способ, чтобы окно моего приложения получало события клавиатуры и/или мыши (то есть пользователь нажимал кнопки окна), сохраняя при этом фокусировку на другом, несвязанном приложении?Сохранение окна другого приложения активным, все еще получая события мыши из окна другого приложения?

Я попытался настроить мое окно на разных уровнях, в том числе [myWindow setLevel: NSPopUpMenuWindowLevel] безрезультатно.

ответ

0

Найдено. Простой, но неуловимый.

Используйте NSPanel и убедитесь, что стиль панели не активирован (NSNonactivatingPanelMask) или отметьте ту же опцию в инспекторе IB.

0

Вы должны быть в состоянии обрабатывать щелчки мыши без заказа переднего стекла, делая ваши взгляды (по крайней мере те, которые обрабатывают щелчки мыши) реагируют на acceptsFirstMouse: messages, отправив NSAppa preventWindowOrdering message, а затем возвращение YES.

Вы не должны вводить свой дескриптор приложения, не заказывая себя спереди. Пользователь может не понимать, куда их печатать, если поле, в котором оно появляется, закрывается другим окном.

+0

Спасибо за советы, хотя они все еще не работают так, как я этого хочу. Для моего класса окон я переопределяю canBecomeKeyWindow (возвращает NO), makeKeyWindow (ничего не делает), принимает FirstResponder (возвращает NO) и canBecomeMainWindow (ничего не делает). Я также определил, как вы предложили моему классу NSButton переопределить acceptsFirstMessage: В принципе, мне нужно, чтобы мое окно всплывало, и пользователь нажимает на его кнопки, в то время как предыдущее приложение (скажем, iTunes) остается активным с его окном и панель меню активна/в фокусе. – hishamk