Swift macOS如何禁用菜单栏按钮



我正在尝试禁用macOS应用程序中的撤消和重做按钮。我选择了每个按钮,并在属性检查器中取消选中"已启用",但按钮仍然处于启用状态。我发现,当我删除与每个按钮关联的IBActions时,然后它们就会被禁用。但我需要IBActions。最终,我需要通过编程来确定按钮是否已启用。我该怎么做?

您必须使您的控制器符合NSUserInterfaceValidations,并为提供实现

func validateUserInterfaceItem(_ item: NSValidatedUserInterfaceItem) -> Bool {
if item.action == #selector(your_action_here) {
return // your condition condition for enable/disable
}
return false
}

备选方案是NSMenuItemValidation,但以上更通用。

相关文档:用户界面验证

最新更新