是有辦法的應用程序添加到程序的所有空間?我希望我的應用程序默認在所有空間上。可可 - 編程添加應用到所有空間
回答
確定。只是以編程方式設置工作區-app-bindings不起作用。我試過了:
1) Verified no entries were in System Preferences->Spaces
2) defaults write com.apple.dock workspaces-app-bindings -dict-add com.apple.mail 65544
3) killall Dock (also needed to kill System Preferences)
4) Opened System Preferences->Spaces to verify the Mail app entry
appeared and was set to Every Space
5) Launched Mail, but it was still stuck to Space 1
6) Only when I went back into System Preferences->Spaces and changed the
Mail app *from* Every Space and then *back* to Every Space did the Mail
app stick to every space
很清楚,系統首選項正在做一些額外的事情來激活設置。有誰知道這可能是什麼?謝謝!
更新:所以,我能夠通過使用AppleScript的API而不是用戶默認的API得到這個工作。以下文章講述瞭如何使用applescript附加一個條目。然後殺死碼頭。
使用附帶的OS X,像這樣的默認命令:
defaults write com.apple.dock workspaces-app-bindings -dict-add com.apple.mail 65544
通過發出上述命令,你設置的「com.apple.mail」標識的應用程序出現在每一個空間。 65544是一種說「每一個空間」的神奇價值。如果鍵值對(標識符+設置)存在,它將被覆蓋。
請注意,您必須重新裝載碼頭(killall Dock
),並以某種方式從你的應用程序中執行這些命令。從Objective-C的範圍內,你可以使用下面的代碼片段退出碼頭:
NSRunningApplication *dock = [NSRunningApplicationrunningApplicationWithBundleIdentifier:@"com.apple.dock"];
[dock terminate];
從內AppleScript的使用:
quit application "Dock"
你需要在NSWindow的方法。
對於獅子使用:
- (void)setCollectionBehavior:(NSWindowCollectionBehavior)behavior
對於預獅子覆蓋以下返回YES:
- (BOOL)canBeVisibleOnAllSpaces
這不僅僅是設置窗口允許的內容。我想你必須通過之前建議的內容具體告訴com.apple.dock。 –
這段代碼在一個小的工作對我來說(至少在10.6.8項目我最近的工作):
-(void)windowDidLoad {
// Make the window visible on all Spaces
if([[self window] respondsToSelector: @selector(setCollectionBehavior:)]) {
[[self window] setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces];
}
else if([[self window] respondsToSelector: @selector(canBeVisibleOnAllSpaces)]) {
[[self window] canBeVisibleOnAllSpaces]; // AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED
}
}
我把這個代碼放在一個(自定義子類的)WindowController的主要應用程序窗口W上。
工作得很好浮動我露臉BG的應用程序的窗口。無需混淆Dock偏好設置。 –
你的應用程序委託應該是這樣的......
#import "alwaysOnTopAppDelegate.h"
@implementation alwaysOnTopAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[window setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces];
}
@end
出了什麼問題@Sjoerd可以格芬的答案嗎?它看起來更完整,也更正確,因爲它在窗口的實例化代碼中執行,而不是像你的那樣在應用程序的實例化代碼中執行(此時不是所有的窗口都可能被打開)。 –
- 1. Tableview不使用所有可用空間
- 2. ,覆蓋了所有可用空間
- 3. 獲取用空間,可用空間上iPhone編程
- 4. 反應原生柔性盒不使用所有可用空間
- 5. 如何添加可可框架到我的iPhone應用程序
- 6. 將UMEKit框架添加到可可應用程序
- 7. 從可可應用程序添加事件到iCal
- 8. tank.log直到消耗所有可用空間
- 9. 以編程方式隱藏所有其他活動的應用程序可可
- 10. 可能在iTunes Connect中爲應用程序描述添加標籤空間?
- 11. iPhone上的應用程序有多少磁盤空間可用?
- 12. base64編碼中可能有空間嗎?
- 13. c#將名稱空間的聲明添加到所有類
- 14. weblogic 10.3.6應用程序所有時間可用性
- 15. 編輯文字沒有伸展到可用空間
- 16. 添加一個可繪製資源編程和獲得所有可繪製的名單編程
- 17. 我可以做到嗎,所以我不必添加空間來獲得總和?
- 18. 在登錄期間爲所有用戶啓動可可應用程序
- 19. 在不同的項目中添加一個命名空間引用到所有Web應用程序的網頁
- 20. Ratingbar沒有佔用所有可用空間
- 21. WPF Dockbox與groupboxes沒有佔用所有可用空間
- 22. 爲可編寫腳本的應用程序添加AppleScript命令
- 23. 將白色空間添加到我的彙編程序中
- 24. 可可:使用pyobjc在沙箱中添加應用程序
- 25. 是否可以添加對現有應用程序的引用
- 26. SQL服務器:添加CSV可編程
- 27. 添加文件到可用的洪流應用程序android
- 28. 爲什麼ListBoxItems沒有獲得所有可用空間?
- 29. 如何有一個控制填滿所有可用的空間
- 30. 設置項具有的所有可用空間寬度
感謝您的答覆!然而,從應用運行命令行工具似乎有點冒失(沒有冒犯)。有沒有API? –
您可以使用Cocoa API中的NSUserDefaults來編寫默認值:http://www.cocoadev.com/index.pl?NSUserDefaults – scravy