2011-02-20 22 views
5

- [NSWindow setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces] kullanarak bir pencere oluşturdum. Yine de istediğimin yarısını yapıyor, ancak: boşlukları değiştirdiğimde, pencere boşlukları da (beklendiği gibi) değiştiriyor, ancak pencerem o alandaki tüm diğer pencerelerin arkasına doğru hareket ediyor. Bu özellikle kötü çünkü uygulamam etkin ancak penceresi diğer tüm uygulama pencerelerinin altında. Seviyeyi NSFloatingWindowLevel olarak değiştirmeyi denedim ve bu onu en üstte tutuyor, ancak boşluk değiştirirken anahtar durumunu (odağı) kaybediyor.Boşlukları değiştirirken pencereyi açık tut

NSWindowCollectionBehaviorMoveToActiveSpace koleksiyon davranışını denedim ancak kesinlikle aradığım şey değil.

Umut var mı? Spaces ile ilgili neredeyse hiçbir API'nin olmadığını biliyorum.

cevap

2

Mekanlar bir acıdır. Benim WindowController sınıfta Sonra

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(activeSpaceDidChange:) name:NSWorkspaceActiveSpaceDidChangeNotification object:nil]; 

: Benim çözümüm şöyle bir değişiklik bildirimi için kayıt oldu ben ile geldi dek (NSBorderlessWindowMask ile oluşturulan) kenarlıksız pencereler için

- (void) activeSpaceDidChange:(NSNotification *)aNotification { 
    if ([NSApp isActive]) [[self window] orderFront:self]; 
} 
0

, kafamı çarptım Francis için aşağıdaki modifikasyon:

- (void) activeSpaceDidChange:(NSNotification *)aNotification { 

    if ([NSApp isActive]) 
    { 
     NSRect windowRect = [[self window] frame]; 
     [[self window] setStyleMask:NSTitledWindowMask]; 
     [[self window] setStyleMask:NSBorderlessWindowMask]; 
     [[self window] setFrame:windowRect display:YES]; 
     [[NSApplication sharedApplication] activateIgnoringOtherApps : YES]; 
    } 
} 

Ben kenarlıksız pencereler bunu kandırmak için fikrine götürdü sorunları var belirten diğerlerini görünce momentumlar kenarlıksız bir pencere olarak görmeyerek rily. İlk olarak, stil maskesini "Titledim" ve ardından "activateIgnoringOtherApps" ve daha sonra "kenarlıksız" stili geri ayarlayarak daha mantıklı bir çözüm olarak ayarlamıştım. Yine de, işleyebilmesi için en az çözümün gerekli olduğunu görmek için yukarıdaki çalışmaları görmeye son verdim. Birisi, bunun işe yaramasına izin veren tam olarak ne olduğunu doldurursa harika ol.