2013-01-12 1 views
5

다음을 수행하고 싶습니다.
상태 표시 줄 항목 (NSStatusItem)을 클릭하면 무제한으로 (메뉴 없음) 강조 표시하고 응용 프로그램이 포커스를 잃었을 때 강조 표시를 중지하려고합니다.

이렇게하는 방법이 있습니까? 나는 그것을 찾을 수 없다.상태 표시 줄 항목을 프로그래밍 방식으로 강조 표시 할 수있는 방법이 있습니까?

+2

응용 프로그램에서이 작업을 수행하는 경우 하이라이트와 하이라이트 사이에서 표준 이벤트 루프를 사용하지 않았다고 생각합니다. 창이 표시되는지 나타내려면 항목 아이콘을 변경해야합니다. –

답변

2

sends the status item a drawStatusBarBackgroundInRect:withHighlight: message의 사용자 지정보기에서이 작업을 수행 할 수 있습니다.

내 의견에 언급했듯이 사용자가 마우스를 내려 놓지 않은 상태에서 항목을 강조 표시하면 사용자보기가 없어도이를 수행 할 수있는 방법이 없습니다.

+1

것은 : 상태 막대 항목 바로 아래에 (클릭했을 때) NSWindow (popover 없음)가 나타납니다. 그래서, NSMenu 동작을 모방하는 것입니다 : 상태 표시 줄을 클릭하면 창이 표시되고 항목이 강조 표시됩니다. 응용 프로그램이 포커스를 잃으면 창이 사라지고 항목이 정상 상태로 이동합니다. –

+0

@PedroVieira : 합리적인 것으로 들립니다. 내가 그 일을했다면 나는 나의 대답에 묘사 된 것과 같은 커스텀 뷰를 만들 것이다. –

+0

Pedro, 지금 당장 똑같은 문제에 직면하고 있습니다. 피터의 해결책을 어떻게 구현했는지 공유해 주시겠습니까? 건배. –

2

이전 질문이지만이 대안 답변을 추가 할 가치가 있다고 생각합니다. 응용 프로그램이 포커스를 잃으면, 그러나 이것은 당신이합니다 (other answer의 요구에 따라) 사용자 정의보기를 사용하지 않고 강조 할 수 있습니다 때

이 자동으로 unhighlight되지 않습니다

NSStatusItem *statusItem = [self getStatusItem]; 
[statusItem.button setHighlighted:YES]; 
는 는

당신은 수동을 사용하여 unhighlight 수 있습니다 동일한 방법 :

[statusItem.button setHighlighted:NO]; 

참고 비슷한 질문이 답변을 얻었습니다 here.

관련 문제