gpt4 book ai didi

swift - 检测何时通过拖放删除了 NSStatusItem

转载 作者:行者123 更新时间:2023-11-28 13:29:46 27 4
gpt4 key购买 nike

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

removing the WiFi status item from the status bar

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

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

有什么想法吗? :)

最佳答案

documentation对于 NSStatusItemBehaviorRemovalAllowed 说:

Upon removal, the item’s visible property changes to NO. This change is observable using key-value observation.

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


就是说,在测试过程中:系统可以很好地为您处理这个问题。创建状态栏项时,不要设置 visible 属性,而是设置 autosaveName .如果用户从状态栏中删除您的项目,系统会将其写入 ~/Library/Preferences 中的应用首选项,并且您的状态栏项目将不会在未来的启动中可见。

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

关于swift - 检测何时通过拖放删除了 NSStatusItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57578716/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com