Наведите курсор мыши на событие - PullRequest
0 голосов
/ 26 августа 2011

Я долго использовал NSMenu и NSStatusItem для отображения пользовательского меню в строке состояния таким образом:

statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:18] retain]; [statusItem setImage:[NSImage imageNamed:@"myIcon"]]; [statusItem setMenu:myMenu]; [statusItem setHighlightMode:NO]; ...

Он работает нормально, начав щелкать значок изображения.Но я заметил, что меню яблока, расположенное в строке состояния, может быть вызвано простым перемещением мыши, например меню аэропорта, меню питания, меню языка и меню даты / времени.Все они автоматически всплывают при наведении мыши.Как они это получили?

Я проверил «добавить отслеживание прямоугольника» для NSView с событием «mouseEntered», но все не так сложно, как мне кажется.

Любой совет?

1 Ответ

1 голос
/ 27 марта 2012

Я думаю, что statusItem не является поддерживаемым событием мыши, но вы можете установить представление для statusItem и переопределить метод даже для мыши для поддержки события мыши, просто так:

statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
  NSButton *nb = [[NSButton alloc] init]; 
  [nb setImage:image];
  [nb setAction:@selector(statusItemClick:)];  
  [_statusItem setView:nb];

здесь простоНапример, чтобы установить представление для statusitem, если вы хотите поддерживать событие мыши, ваше представление должно расширить то же представление и создать NSTrackingArea и реализовать методы moveMoved, mouseEntered и mouseExited (или те, которые вы хотите)

...