アトトックラボ

2011年2月08日

SpacesでアクティブなSpaceが切り替わったことを検出

Posted by Yoichi Kurusaki

SpacesでアクティブなSpaceが切り替わったことを検出するには、
NSWorkspaceActiveSpaceDidChangeNotificationが通知されるようにする。

下記の例では、アプリケーションのDelegateクラスで検出するようにしてみた。

サンプルコード

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{
	// ◆SpacesでアクティブなSpaceが切り替わったことを検出するように設定
	// Spaceが変わったタイミングで、activeSpaceDidChangeが呼ばれるようにする。
	NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
	
	NSNotificationCenter* center = [workspace notificationCenter];
	[center addObserver:self
		selector:@selector(activeSpaceDidChange:)
		name:NSWorkspaceActiveSpaceDidChangeNotification
		object:nil];
}


// SpacesでアクティブなSpaceが変わったときに呼び出される
-(void)activeSpaceDidChange:(NSNotification *)notification
{
	// Spaceが変わったら、このメソッドが呼び出される。
}

NSWorkspaceActiveSpaceDidChangeNotificationは Snow Leopardで追加されたようだ。

NSWorkspaceActiveSpaceDidChangeNotification
Posted when a Spaces change has occurred.
The notification object is the shared NSWorkspace instance. The notification does not contain a userInfo dictionary.
Availability
Available in Mac OS X v10.6 and later.
Declared In
NSWorkspace.h