Мини-плеер iTunes (приведу только один пример) поддерживает переход по щелчку мыши, когда приложение не выводится на передний план, когда используются элементы управления воспроизведением / паузой и громкостью.
Как это сделать?
Я просмотрел документацию Apple, и мне нужно немного продолжить в Руководство по обработке событий какао, отправка событий, в котором говорится:
Некоторые события, многие из которых определяются Application Kit (тип NSAppKitDefined), связаны с действиями, управляемыми окном или самим объектом приложения. Примерами этих событий являются события, связанные с активацией, деактивацией, скрытием и отображением приложения. NSApp отфильтровывает эти события на ранних этапах своей процедуры отправки и обрабатывает их самостоятельно.
Итак, из моего ограниченного понимания (Как событие входит в какао, приложение) подкласс NSApplication и переопределение - (void)sendEvent:(NSEvent *)theEvent
должны перехватывать каждое событие мыши и клавиатуры, но все же окно открывается при нажатии. Таким образом, либо окно открывается до того, как событие будет обнаружено NSApplication, либо мне не хватает чего-то еще.
К сожалению, я просмотрел рассказ Мэтта Галлахера, который проясняет NSApplication путем его воссоздания Мэтт не покрыл очередь событий, так что в остальном я в тупике.
Любая помощь будет оценена, спасибо.
Отредактировано для добавления: Нашел сообщение в Lloyd's Lounge, в котором он говорит об той же проблеме и ссылается на сообщение по адресу CocoaBuilder, сделайте первый снимок правой кнопкой мыши. В настоящее время я пробую код, предоставленный там, после некоторой возни и повторной активации NSLog для [theEvent type] обнаруживается активность левой кнопки мыши.
Теперь, щелкнув левой кнопкой мыши по окну, чтобы открыть его, вы получите последовательность типов событий 13, 1, 13
, это снова NSAppKitDefined, NSLeftMouseDown и NSAppKitDefined. Могу ли я отфильтровать их или узнать, куда они идут?