如何检测NSView或其父NSWindow的活动外观?

问题描述 投票:4回答:1

所有本机控件的父窗口处于活动状态或非活动状态时,其外观都不同。我们应该如何在自定义组件中检查此状态,例如在渲染按钮单元格时?

我们可以检查controlView.window的属性,例如isMainWindowisKeyWindow,但它们并不涵盖所有情况。例如,如果您在桌面上打开应用程序的一个窗口,而在全屏空间中打开另一个窗口,则根据公共API,其中只有一个可以是键或主键。但是,标准控件似乎使它们在两个空间中都处于活动状态:

[请注意,两个Safari窗口中的工具栏按钮如何呈现为活动状态。我们如何实现相同的行为?

cocoa nsview nswindow appkit nscell
1个回答
0
投票

幸运的是,SwiftUI允许从环境继承新的魔术属性:

/// Window state.
@Environment(\.controlActiveState)
var windowState: ControlActiveState

这是官方解决方案。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.