NSStatusBarItem控制窗口显示

1.首先先创建NSStatusBarItem ,需要将item保存到属性中,否则对象会被系统的管理机制释放掉,NSStatusBar将不会出现item.

NSStatusItem * item = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];

[item.button setTarget:self];

[item.button setAction:@selector(itemClick:)];

item.button.image = [NSImage imageNamed:@"online"];

self.item  = item;

2.itemClick:方法,此时的item点击事件只能将处于非活动状态的应用窗口呼出到最前面,[[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps];

3.增加通知监听window的变化,系统发出通知,创建属性记录windonw的状态,BOOL 类型isMin,发出通知时,改变属性的值,记录状态的变化.

//最小化时,系统发出通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(minWindown:) name:NSWindowDidMiniaturizeNotification object:nil];

//处于最小化时,点击Dock区恢复

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mainWindown:) name:NSWindowDidBecomeMainNotification object:nil];

4.在点击事件中根据属性的值,来控制如何显示windown

- (void)mainWindown:(NSNotification *)noti {

self.isMin = NO;

}

- (void)minWindown:(NSNotification *)noti {

self.isMin = YES;

}

- (IBAction)itemClick:(NSButton *)sender{

if (self.isMin == YES) {

[self.window makeKeyAndOrderFront:self];

[self.window center];

}else {

self.isMin = NO;

[[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps];

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容