Уведомление о рычании, например, уровень nswindow - PullRequest
0 голосов
/ 14 апреля 2011

Я пишу систему уведомлений, как рычание. Уведомление является окном, и его уровень установлен как NSModalPanelWindowLevel. Единственная проблема в том, что у меня есть кнопка в этом окне, и когда пользователь хочет нажать на эту кнопку, он / она должен нажать на нее дважды. Но, например, в рычании, независимо от того, какое окно вы открыли, вы просто нажимаете на уведомление, и оно регистрирует щелчок. Так это проблема уровня? Если так, что я должен установить это? Спасибо

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

В ваших пользовательских элементах управления, которые составляют содержимое окна, вы, вероятно, захотите переопределить NSView '-acceptsFirstMouse: метод возврата YES:

Обсуждение

Получатель может либо вернуть значение безоговорочно, либо использовать местоположение theEvent, чтобы определить, хочет ли он события.Реализация по умолчанию игнорирует theEvent и возвращает NO.

Переопределить этот метод в подклассе, чтобы позволить экземплярам реагировать на переход по клику.Это позволяет пользователю щелкнуть по представлению в неактивном окне, активируя представление одним щелчком мыши, вместо того, чтобы сначала щелкнуть, чтобы сделать окно активным, а затем щелкнуть представление.Большинство объектов просмотра отклоняют попытку перехода, поэтому событие просто активирует окно.Однако многие объекты управления, такие как экземпляры NSButton и NSSlider, принимают их, поэтому пользователь может немедленно управлять элементом управления, не отпуская кнопку мыши.

0 голосов
/ 14 апреля 2011

Не уверен, что это именно то, что делает Growl, но вы можете прослушивать события мыши в окне и использовать их для активации / деактивации окна до щелчка.Я подозреваю, что ваша проблема заключается в том, что первый клик сгорает при активации окна.

Хотя это только предположение.

Чтобы узнать, как обрабатывать события мыши, посмотритедокументация:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/TrackingAreaObjects/TrackingAreaObjects.html

...