2011-09-28 32 views
10

Tôi có một ứng dụng phải luôn ở trên đầu các ứng dụng khác. Tôi hiện đang sử dụng thuộc tính setLevel cho cửa sổ chính để giữ nó trên đầu trang của các ứng dụng máy tính để bàn khác.Cách làm cho ứng dụng của tôi luôn ở trên đầu các ứng dụng toàn màn hình

Tôi đang cố gắng sửa ứng dụng của mình để ứng dụng cũng có thể luôn cập nhật ứng dụng toàn màn hình trong Lion. Bất kỳ ý tưởng nào về cách thực hiện điều này?

Đơn đại biểu trông như thế này:

#import "alwaysOnTopAppDelegate.h" 

@implementation alwaysOnTopAppDelegate 

@synthesize window; 

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

@end 
+3

Kể từ khi toàn bộ các điểm chế độ toàn màn hình là tập trung vào một ứng dụng để loại trừ tất cả những người khác, tôi đã có thể nghĩ hành vi mà bạn đang cố gắng để thực hiện sẽ được coi là không mong muốn bởi hầu hết người dùng đầy đủ ứng dụng màn hình và nó thậm chí không thể thực hiện được. – JeremyP

+1

Hành vi dĩ nhiên là tùy chọn. Có một ứng dụng "Nhân viên yêu thích" trong cửa hàng ứng dụng có tính năng này: http://itunes.apple.com/dk/app/yoink/id457622435?mt=12 –

+0

Tôi đã chỉnh sửa, rõ ràng, không thể thực hiện được và thậm chí có sự chấp thuận của Apple trong hoàn cảnh phù hợp. – JeremyP

Trả lời

6

Tìm thấy câu trả lời: Các đại biểu ứng dụng sẽ trông như thế này:

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

Cách mà Yoink làm việc rất đơn giản: Chỉ cần thiết lập "Ứng dụng là Agent (UIElement)" YES trong Info.plist cho ứng dụng của bạn. Nó sẽ có nghĩa là nó không hiển thị trong dock vv nhưng đó có lẽ là tốt cho một cửa sổ phụ trợ (tốt, nó đã được cho tôi!). Nó có thể có ý nghĩa để cung cấp một mục trình đơn thanh trong trường hợp này để người dùng có thể dừng ứng dụng một cách dễ dàng.

+0

Điều đó không giữ nó trên đầu trang của ứng dụng toàn màn hình trong sư tử. –

0

theo là mã thử nghiệm của tôi, nó hoạt động ok, hy vọng có thể giúp đỡ.

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]; 
Các vấn đề liên quan