2011-07-25 10 views
13

[NSApplication presentationOptions]NSFullScreenModeApplicationPresentationOptionsが含まれているかどうかを確認する必要がありますが、どうすれば達成できますか?NSWindowがMac OS X Lionで全画面表示されているかどうかを確認するには?

EDIT:[NSApplication presentationOptions]を使用すると、ドキュメントベースのアプリケーションと同じように機能しません。一部のドキュメントはフルスクリーンで表示される場合があります。私は今、別の解決策を探しています。私はとかそのようなものがなぜ存在しないのだろうと思っています。

答えて

30

私は解決策を探していましたが、Matthieuの答えに基づいて、私はNSWindowのカテゴリを作成してくれました。スウィフト3.0明らかに

if let window = NSApp.mainWindow { 
    let isWindowFullscreen = window.styleMask.contains(NSFullScreenWindowMask) 
} 

については

@interface NSWindow (FullScreen) 

- (BOOL)mn_isFullScreen; 

@end 

@implementation NSWindow (FullScreen) 

- (BOOL)mn_isFullScreen 
{ 
    return (([self styleMask] & NSFullScreenWindowMask) == NSFullScreenWindowMask); 
} 

@end 
10

&ビット演算子を使用して、そのオプションが使用されていることをテストする必要があります。 テストしたが、おそらくこのようなものはありません:あなたの窓のいずれかがフルスクリーンモードで、単純にウィンドウのスタイルマスクをチェックしているかどうかを確認するために

- (BOOL) inFullScreenMode { 
    NSApplicationPresentationOptions opts = [[NSApplication sharedApplication ] presentationOptions]; 
    if (opts & NSApplicationPresentationFullScreen) { 
     return YES; 
    } 
    return NO; 
} 

NSUInteger masks = [someNSWindow styleMask] 
if (masks & NSFullScreenWindowMask) { 
// Do something 
} 
+0

ありがとう、これは私が必要としていたものです。ただ1つの修正: 'NSApplication'の代わりに' NSApp'を使用してください。そうしないと警告が表示されます。もちろん、 - (BOOL)inFullScreenMode() 'は - (BOOL)inFullScreenMode'と書かれています。 – Nickkk

+0

残念ながら、もう一つの問題があります。私のドキュメントベースのアプリケーションでは、ドキュメントの一部がフルスクリーンで、他のものがそうでないため、上記のソリューションを使用することはできません。他の解決策? – Nickkk

+0

すべてのウィンドウのスタイルマスクを確認するだけです。私はいくつかのサンプルコードを追加しました。 –

2

、元の質問のために、あなたがチェックしたいしている方のドキュメントウィンドウでNSApp.mainWindowを交換したいです。

関連する問題