2011-10-12 2 views
8

나는 NSStatusItem을 사용하는 앱을 가지고 있습니다. 작은 화면에서는 상태 표시 줄에 공간이별로 없습니다. 사용자가 메뉴 항목이 많은 응용 프로그램으로 전환하면 내 상태 항목이 숨겨집니다. 이 사실을 알리는 방법이 있습니까? NSStatusItem이 숨겨져있을 때 알려주고 있습니다.

는 지금까지 시도하지 무엇 :

  • 내가 어떤 NSNotification 해고 된 경우 확인하십시오 statusView 뷰 계층 구조에서 제거되면 어떤
  • 내가 확인 : 없음
  • 내가 isHiddenOrHasHiddenAncestor을 확인 : 없음

다음은 상태 항목을 만드는 데 사용하는 코드입니다.

self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 
MyStatusView *maView = [[[MyStatusView alloc] initWithFrame:CGRectMake(0, 0, 50, 22)] autorelease]; 
[statusItem setTitle:@"Ma Status Item"]; 
[statusItem setView:maView]; 
+0

화면에서 이동할 때 view.center 속성이 변경되는지 테스트 할 수 있습니까? center 속성에 KVO 알림을 추가하여 일종의 콜백을 설정할 수도 있지만 statusItem에서 작동하는지 여부는 알 수 없습니다. – Suz

+0

또한 창을 기준으로 경계를 기록하는 타이머가 있습니다. 변경되지 않음 ... maView가 자체 윈도우 (NSWindow> NSNextStepFrame> maView)에있는 것처럼 보입니다. 이것이 화면 밖으로 이동하면 시도해 볼 것입니다. – stigi

+0

창 경계도 여전히 화면에 있습니다. 창에 다른 것이 겹칠 수 있습니다. 이걸 어떻게 확인할 지 모르겠다. .. – stigi

답변

1

그것은 상태 항목이 숨겨져있는 경우, 그 창을 배경으로 이동됩니다 실현하기 위해 당신의 아주 똑똑.

지금 당신이 찾고있는 알림은 다음과 같습니다 NSWindowDidResignKeyNotification (또는 NSWindowDidResignMainNotification 응용 프로그램의 상황에 따라) 키를 윈도우와 메인 윈도우의 차이에 대한 명확한 설명은

, this 참조 .

+0

이 답변은 작동하지 않습니다. -1, NSStatusItem이 숨겨져있을 때 그 종류의 알림이 전송되지 않습니다. – Vervious

+0

-1 : 두 번째 @Vervious -이 대답은 쓸모없는 것보다 나빠요. 작업. – ArtOfWarfare