2013-03-18 4 views
2

이 사용 사례는 비정형이지만, 일부 상황에서만 NSPanel을 비 활성화시키는 방법을 찾아 내려고 노력했습니다.NSPanel에서 NSNonactivatingPanelMask를 켜고 끄는 것이 가능합니까?

NSPanel가 초기화되는 경우 (패널의 "비 활성화"속성이 인터페이스 빌더에서 선택된 경우 나), 나중에 코드에서 스타일의 마스크를 변경하는 윈도우의 행동에 아무런 영향이 없습니다 NSNonactivatingPanelMask :

[panel setStyleMask:([panel styleMask] | NSNonactivatingPanelMask)]; 

styleMask 속성을 검사하면 NSNonactivatingPanelMask이 켜져 있지만 제목 표시 줄을 클릭해도 응용 프로그램이 활성화됩니다.

반대의 경우도 마찬가지입니다. NSNonactivatingPanelMask으로 초기화하고 코드를 나중에 ([panel styleMask] & ~NSNonactivatingPanelMask) 마스크로 설정하면 윈도우 동작에 아무런 영향을 미치지 않으므로 이 아니며 제목 표시 줄을 클릭 할 때 응용 프로그램을 활성화하십시오.

스타일 마스크를 재 해석하도록 창에 알리는 것과 같은 간단한 해결책이 있습니까? 그렇지 않은 경우, 가장 적합한 대안은 무엇입니까?

답변

0

내가 찾은 해결책은 IB의 비 활성화 체크 박스를 선택 취소하는 것입니다. 그런 다음 나중에 코드에서 NSNonactivatingPanelMask 플래그를 설정하거나 제거하십시오.

if (nonactivating) 
    self.window.styleMask &= ~NSNonactivatingPanelMask; 
else 
    self.window.styleMask |= NSNonactivatingPanelMask; 

원하지 않는 창의 제목 표시 줄을 클릭해도 응용 프로그램을 활성화 할 수 있습니다. 제목 표시 줄을 완전히 비활성화하거나 다른 방법으로 응용 프로그램을 활성화 할 수 있습니다.