2013-03-14 1 views
1

OSX 10.7에서 앱을 개발 중입니다. 목표는 앱이 있어야하는 동안 두 번째 화면에서 일부 이미지를 여는 것입니다. 처음에 정상적으로 작동합니다.코코아 두 번째 화면에서 전체 화면 창 열기 첫 번째에 앱 표시 유지

그래서 코드는 다음과 같다 : 이런 식으로

NSScreen *screen = [[NSScreen screens] objectAtIndex:1]; 

fullScreenWindow = [[NSWindow alloc] initWithContentRect:[screenFrame] 
               styleMask:NSBorderlessWindowMask 
               backing:NSBackingStoreBuffered 
                defer:NO 
                screen:screen]; 
[fullScreenWindow setLevel: NSMainMenuWIndowLevel + 1]; 
[fullScreenWindow setOpaque: YES]; 
[fullScreenWindow setBackgroundColor:[NSColor yellowColor]]; 

fullScreenView = [[NSView alloc] initWithFrame:NSMakeRect(0.0f, 0.0f, fullScreenWindow.frame.size.width, fullScreenWindow.frame.size.height)]; 
// Adding a test button 
NSButton *testButton = [[NSButton alloc] initWithFrame(50.0f, 50.0f, 100.0f, 50.0f)]; 
[testButton setTarget:self]; 
[testButton setAction:@selector(closeExternalWindow)]; 
[fullScreenView addSubview:testButton]; 

// Present the fullscreen window 
[fullScreenWindow.contentView addSubview:fullScreenView]; 
[fullScreenWindow makeKeyAndOrderFront:self]; 

, 응용 프로그램이 올바르게 표시되는 첫 번째 화면에서,하지만 두 번째 화면에 난 그냥 전체 화면 검은 창을 참조하십시오.

무엇이 문제입니까?

감사합니다.

+0

그냥 추측하지만 내 항상 모든 것이 든 또는 전혀없는 것인가라는 느낌이 들었습니다. 최소한 내가 한 번도 본 적이없는 앱은 없습니다. 따라서 가능하다하더라도 (나는 의심 스럽지만) 사용자에게 앱을 사용할 때 매우 이상한 경험을 할 것입니다. – Jay

+0

안녕하세요 제이, 답장을 보내 주셔서 감사합니다.하지만 왜 그걸 나쁜 디자인이라고 생각하십니까? 기조 연설을 생각해보십시오. 예를 들어, 두 번째 화면 (프로젝터)을 사용하여 일부 이미지 나 프레젠테이션을 표시하고 기본 화면을 사용하여 데이터를 읽거나 다른 작업을 실행하는 것이 좋습니다. –

+0

흠, 좋은 지적 :-) 사실, iMovie는 그것에 대해 똑같은 생각을합니다. 그래서 전혀 전례가없는, 약간 특이한. – Jay

답변

1

애플의 문서를 읽기 initWithContentRect:styleMask:backing:defer:screen: 것은 윈도우가 메인 화면 이외의 화면에 그려 질 경우 윈도우의 내용 사각형이 그려지는 곳 화면 매개 변수 ..

를 지정한다고. 내용 사각형은 화면의 왼쪽 하단 모서리를 기준으로 그려집니다. [screen frame]를 사용하는 경우 위치가 이미 화면에 상대적으로

그래서 당신은 실제로 두 번째 화면 떨어져 그것을 이동하고 있습니다.

예상되는 위치에 표시하려면 코드를 변경할 수 있습니다. 예 :

[[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, [screen frame].size.width, [screen frame].size.height) 
          styleMask:NSBorderlessWindowMask 
           backing:NSBackingStoreBuffered 
           defer:NO 
           screen:screen]; 
0

에 며칠 후 나는이 코드를 다시 작동 할 수있는 가능성이 있고 지금은 작동합니다

NSScreen *screen = [[NSScreen screens] objectAtIndex:1]; 
NSRect mainDisplayRect = [screen frame]; 
fullScreenWindow = [[NSWindow alloc] initWithContentRect: mainDisplayRect styleMask:NSBorderlessWindowMask 
               backing:NSBackingStoreBuffered defer:YES]; 
[fullScreenWindow setLevel:NSMainMenuWindowLevel+1]; 
[fullScreenWindow setOpaque:YES]; 
[fullScreenWindow setHidesOnDeactivate:YES]; 
[fullScreenWindow setBackgroundColor:[NSColor redColor]]; 

NSRect viewRect = NSMakeRect(0.0, 0.0, mainDisplayRect.size.width, mainDisplayRect.size.height); 
fullScreenView = [[PresenterView alloc] initWithFrame:viewRect]; 
[fullScreenWindow setContentView: fullScreenView]; 
[fullScreenWindow makeKeyAndOrderFront:self]; 

제이가 지원에 감사드립니다)

+1

.. 트릭을하면 내 반응을 자유롭게 받아 들일 수 있습니다. – Jay

관련 문제