Я хотел бы показать NSWindow
, созданный в полноэкранном режиме, на дополнительном мониторе. В приведенном ниже коде отображается окно, отображаемое на основном экране/главном экране. Происхождение Y в норме, но происхождение X равно 0, где должно быть -1680. Код ниже работал до Йосемити.Показать NSWindow на вторичном экране
NSScreen *screen = [[NSScreen screens] objectAtIndex:2];
NSRect mainDisplayRect = [screen frame];
[PresenterWindow setFrame: mainDisplayRect display:YES animate:YES];
[PresenterWindow makeKeyAndOrderFront:sender];
[PresenterWindow setLevel: CGShieldingWindowLevel()];
Я также попытался следующие с тем же результатом:
[[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, [screen frame].size.width, [screen frame].size.height)
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO
screen:screen];
Пожалуйста, посоветуйте, как я могу это исправить.
Я пробовал решения от некоторых других вопросов:
- Cocoa Open a fullscreen window on the second screen maintaining the app visible on the first - не работает - тот же результат.
- Display os x window full screen on secondary monitor using Cocoa - nope - ни с
enterFullScreenMode:withOptions:
метод NSView.
У меня есть некоторые новые наблюдения:
Если я активировать «Запуск при старте» в раскадровке для моего NSWindow
окно рассматривается в полноэкранном режиме на моем вторичном мониторе. Если я затем сделаю orderOut
и запустив вышеуказанный код, окно будет отображаться в правильном размере, но на моем основном/главном экране. Окно не активируется для «Отпустить при закрытии». Поэтому, когда я деактивирую «Запуск при запуске», окно снова просматривается на основном/главном экране с размером дополнительного экрана.
Попробуйте установить уровень окна, прежде чем заказать его в случае, если это не сработает, попробуйте перекрывая '-constrainFrameRect:. toScreen:' просто вернуть passed- в прямой. –
Спасибо, Кен, но я не помог. Я узнал, что это сработало, если я активировал «Visible At Launch» для своего NSWindow в раскадровке. Если я тогда программировал, заказывал окно, тогда в следующий раз запускается первоначальный скрипт, это было неправильно. – MaxKlinge