可以将NSStatusItem's
behaviour
属性设置为removalAllowed
( NSStatusItemBehaviorRemovalAllowed
) 然后用户可以使用拖放从状态栏中删除项目。
示例:从状态栏中删除 WiFi 状态项
但是,我无法检测到状态栏何时被删除,因此我可以记住它并且不会在用户下次启动应用程序时显示它。没有委托或通知,并且该statusBar
属性是只读的,因此我无法覆盖设置器。
任何想法?:)
可以将NSStatusItem's
behaviour
属性设置为removalAllowed
( NSStatusItemBehaviorRemovalAllowed
) 然后用户可以使用拖放从状态栏中删除项目。
示例:从状态栏中删除 WiFi 状态项
但是,我无法检测到状态栏何时被删除,因此我可以记住它并且不会在用户下次启动应用程序时显示它。没有委托或通知,并且该statusBar
属性是只读的,因此我无法覆盖设置器。
任何想法?:)
的文档NSStatusItemBehaviorRemovalAllowed
说:
移除后,该项目的可见属性更改为 NO。使用键值观察可以观察到这种变化。
因此,您可以为该属性添加一个 KVO 观察者,如果它更改为NO
(并假设您没有将其设置为NO
),则不要在未来启动时显示您的状态栏项目。
也就是说,在测试这一点:系统为您处理得相当好。创建状态栏项目时,不要设置visible
属性,并设置autosaveName。如果用户从状态栏中删除您的项目,系统会将其写入 ~/Library/Preferences 中的应用程序首选项,并且您的状态栏项目在未来启动时将不可见。
要恢复可见性,请将visible
属性手动设置为YES
。