objective-c - 如何禁用 NSStatusItem 的高亮模式

标签 objective-c swift macos cocoa nsstatusitem

我想在单击时设置禁用 NSStatusItem 的突出显示模式。在 OS X 10.10 及更高版本中,highlightedMode 属性已被弃用,Apple 建议使用 button 属性。那么,什么是 setHighlightedMode: 的等价物? Swift 或 Objective-C 都可以。

提前致谢。

最佳答案

获取按钮的单元格,转换为 NSButtonCell*,并将其 highlightsBy 属性设置为 0。当然,这涉及到单元格,这些单元格也逐渐被弃用。

在内部,-[NSStatusItem setHighlightMode:] 调用 -[NSStatusBarButton setHighlightMode:],后者调用 -[NSStatusBarButtonCell setHighlightMode:]。最后使用 0 或 NSContentsCellMask | 对自身调用 -setHighlightsBy: NSChangeBackgroundCellMask,取决于模式。不幸的是,-[NSStatusBarButton setHighlightMode:]NSStatusBarButtonCell 都不是公共(public) API,因此您最好的办法就是模拟它们。

总而言之,最好继续使用 -[NSStatusItem setHighlightMode:] 并向 Apple 提交错误报告,请求不推荐使用的方法。

关于objective-c - 如何禁用 NSStatusItem 的高亮模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689213/

相关文章:

iphone - ASIHttpRequest responseStatusCode = 200。但没有从服务器获取正确的responseData

linux - 为什么我的主机文件不再重定向?

macos - 如何在Mac OS X上安装libffi-dev

python - 什么会导致 Tkinter/Python 中打开的文件对话框窗口在用户选择文件后关闭得非常慢?

objective-c - 我如何回到 SpriteKit 中的旧场景?

objective-c - 从 UI 中删除图像

objective-c - NSMutableArray 实例变量内存管理

ios - 每个 UITableView 的 UITableView 循环有不同的数据?

ios - 类型为 Void 的 appendAttributedString 返回值

ios - Swift 3 使用 NSAttributedString 渲染 textview 但想要更改默认字体