0

可以将NSStatusItem's behaviour属性设置为removalAllowed( NSStatusItemBehaviorRemovalAllowed) 然后用户可以使用拖放从状态栏中删除项目。

从状态栏中删除 WiFi 状态项

示例:从状态栏中删除 WiFi 状态项

但是,我无法检测到状态栏何时被删除,因此我可以记住它并且不会在用户下次启动应用程序时显示它。没有委托或通知,并且该statusBar属性是只读的,因此我无法覆盖设置器。

任何想法?:)

4

1 回答 1

2

文档NSStatusItemBehaviorRemovalAllowed说:

移除后,该项目的可见属性更改为 NO。使用键值观察可以观察到这种变化。

因此,您可以为该属性添加一个 KVO 观察者,如果它更改为NO(并假设您没有将其设置为NO),则不要在未来启动时显示您的状态栏项目。


也就是说,在测试这一点:系统为您处理得相当好。创建状态栏项目时,不要设置visible属性,并设置autosaveName。如果用户从状态栏中删除您的项目,系统会将其写入 ~/Library/Preferences 中的应用程序首选项,并且您的状态栏项目在未来启动时将不可见。

要恢复可见性,请将visible属性手动设置为YES

于 2019-08-20T20:26:11.733 回答