我正在编写一个 MacOS 应用程序。我正在显示一个按钮。当应用程序处于非活动状态时,如果我单击按钮,按钮的点击事件将在窗口激活的同时触发。到目前为止,一切都很好。
但是,如果我现在添加.buttonStyle(PlainButtonStyle())
到所需外观的按钮,则当窗口处于非活动状态时不会点击它。第一次单击会激活窗口,我需要第二次单击才能触发按钮。
Button {
print("tapped!")
} label: {
Image(systemName: "doc.on.doc")
.resizable()
.frame(width: 14, height: 14)
.padding(5)
}
.buttonStyle(PlainButtonStyle())
视图是否可以在不激活窗口的情况下接收单击事件由该
acceptsFirstMouse(for:)
方法控制。当按钮样式为 时.plain
,该按钮不再由NSButton
(其acceptsFirstMouse
方法将返回true
) 支持,因此您无法单独“点击”该按钮。您可以将 a 包裹
NSViewRepresentable
在按钮周围,并重写acceptsFirstMouse
以返回 true。这是这篇博文中的代码
用法示例: