2011-09-28 22 views
10

Mam aplikację, która musi zawsze pozostać na szczycie innych aplikacji. Aktualnie używam właściwości setLevel dla głównego okna, aby utrzymać ją nad innymi aplikacjami komputerowymi.Jak ustawić moją aplikację na pełnoekranową aplikację?

Próbuję naprawić moją aplikację, aby mogła również pozostać na szczycie pełnoekranowych aplikacji w Lion. Jakieś pomysły na to, jak można to zrobić?

delegat

Aplikacja wygląda następująco:

#import "alwaysOnTopAppDelegate.h" 

@implementation alwaysOnTopAppDelegate 

@synthesize window; 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    [window setLevel:NSFloatingWindowLevel]; 
} 

@end 
+3

Od całego punktu trybie pełnoekranowym jest skupienie się na jednej aplikacji, z wyłączeniem wszystkich innych, myślałem zachowanie staramy się realizować będą uważane za niepożądane przez większość użytkowników pełny app ekranu i może być nawet niemożliwe do wdrożenia. – JeremyP

+1

Zachowanie będzie oczywiście opcjonalne. W sklepie z aplikacjami znajduje się aplikacja "Ulubiony personel", która ma tę funkcję: http://itunes.apple.com/dk/app/yoink/id457622435?mt=12 –

+0

Stoję poprawione, jasno, nie da się tego zrealizować a nawet ma aprobatę Apple w odpowiednich okolicznościach. – JeremyP

Odpowiedz

6

znalazł odpowiedź: aplikacja delegat powinien wyglądać następująco:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    [window setLevel:kCGMainMenuWindowLevel-1]; 
    [window setCollectionBehavior:NSWindowCollectionBehaviorStationary|NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorFullScreenAuxiliary]; 
} 
3

Sposób, że Yoink działa jest prosta: Wystarczy ustawić „Aplikacja jest pełnomocnik (UIElement)” na TAK w Info.plist dla danej aplikacji. Będzie to oznaczać, że nie pojawi się w doku itp., Ale prawdopodobnie jest to dobre dla okna pomocniczego (cóż, to było dla mnie!). Zapewne w tym przypadku warto podać element paska menu, aby użytkownik mógł łatwo zatrzymać aplikację.

+0

To nie zachowuje tego na wierzchu pełnoekranowych aplikacji na lwie. –

0

naśladowania jest mój kod testu, to działa ok, nadzieja może pomóc.

NSPanel *test_panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(300, 300, 500, 500) styleMask:NSTitledWindowMask|NSClosableWindowMask backing:NSBackingStoreBuffered defer:YES]; 
[test_panel setReleasedWhenClosed:YES]; 
[test_panel setHidesOnDeactivate:NO]; 
[test_panel setFloatingPanel:YES]; 
[test_panel setStyleMask:NSBorderlessWindowMask | NSNonactivatingPanelMask]; 
[test_panel setLevel:kCGMainMenuWindowLevel-1]; 
[test_panel setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorFullScreenAuxiliary]; 
[test_panel setCanBeVisibleOnAllSpaces:YES]; 
[test_panel center]; 
[test_panel orderFront:nil]; 
Powiązane problemy