2013-05-06 2 views
0

내 응용 프로그램은 처음에 창 (Def)이있었습니다. 그런 다음 새로운 창이 생성되었습니다 (New). 두 개의 모든 창은 창 하위 메뉴 항목이나 공간 제어로 전환 할 수 있습니다.OSX 10.6.8에서 창을 가짜 전체 화면으로 설정 한 후 키 윈도우가 될 수 없습니다.

그러나 OSX 10.6.8에서 "새"창을 가짜 전체 화면 모드로 설정하려고하면 메뉴 또는 공간 제어로 "Def"창으로 전환하면 문제가 발생합니다. 나는 "New"창으로 "완전히"다시 전환 할 수 없다.

 // setting a fake full screen window on 10.6.8 
    NSApplicationPresentationOptions prereqOptions = 
     NSApplicationPresentationAutoHideDock | 
     NSApplicationPresentationAutoHideMenuBar; 
    [[NSApplication sharedApplication] 
     setPresentationOptions:prereqOptions]; 

    [[self window] setToolbar:nil]; 
    [[self window] setStyleMask:NSBorderlessWindowMask]; 
    [[self window] setFrame:[[NSScreen mainScreen] frame] 
        display:YES]; 

은 "완벽하게"나는 "새로운"화면의 상단에 데려 볼 수 있다는 것을 의미하지만, 윈도우 컨트롤러가 통지 "NSWindowDidBecomeKeyNotification"을받을 수 없습니다. 또한 [NSApp keyWindow]에 의해 키 윈도우가 항상 "Def"임을 알 수 있습니다. 그리고 창 하위 메뉴에서 "Def"가 선택되어 있는지 항상 확인할 수 있습니다.

누구나이 문제가 발생 했습니까?

+0

파기가 더 진행된 후 문제가 [self window] setStyleMask : NSBorderlessWindowMask]로 인해 발견되었습니다. 이 줄을 사용하지 않으면 문제가 없습니다. 아직 확실하지 않은 이유. –

답변

0

마지막으로 2 일간 조사한 후 대답은 NSWindow의 설명서로 돌아갑니다.

두 가지 관련 방법이 있습니다.

  • (BOOL) canBecomeKeyWindow 반환 값 창이 그렇지 않으면 키 윈도우가 될 수있는 경우 YES, NO.

토론 이 메서드가 NO를 반환하면 창을 키 창으로 만들려고하면 취소됩니다. NSWindow 구현은 창에 제목 표시 줄이나 크기 조정 막대가 있으면 YES를 반환하고 그렇지 않으면 NO를 반환합니다.

그리고

canBecomeMainWindow 는 윈도우 응용 프로그램의 메인 윈도우가 될 수 있는지 여부를 나타냅니다.

  • (BOOL) canBecomeMainWindow 반환 값 윈도우가 메인 윈도우가 될 수 YES; 그렇지 않으면 아니오.

토론 이 메서드가 NO를 반환하면 창을 주 창으로 만들려고하면 중단됩니다. NSWindow 구현은 윈도우가 보이고, NSPanel 객체가 아니며, 제목 표시 줄 또는 크기 조정 메커니즘이 있으면 YES를 반환합니다. 그렇지 않으면 NO를 리턴합니다.

따라서 제목 표시 줄이나 크기 조정 막대가 없으면 기본적으로 기본 및 키 창이 될 수 없습니다. [NSWindow setStyleMask : NSBorderlessWindowMask]에 의해 10.6.8에서 가짜 전체 화면으로 창을 설정할 때, 제목 표시 줄은 gong입니다.

이 문제를 해결하려면 위의 2 가지 방법을 재정의하여 YES를 반환해야합니다.

관련 문제