我可以有条件地禁用仅在第一响应者响应选择器时启用的 NSMenuItem 吗?
Can I conditionally disable an NSMenuItem that is only enabled when the first responder responds to a selector?
我有一个 NSMenuItem
是 enabled/disabled 基于第一响应者是否响应特定选择器。
我的问题是在某些情况下我不希望为第一响应者启用该项目。
但我不能在运行时有条件地删除方法定义以禁用菜单项
举例说明我的意思:
我有一个基于 NSDocument
的应用程序,我有两个主要的子类——一个 ImageDocument
和一个 VideoDocument
我有一个名为 "Capture Frame" 的 NSMenuItem
,它可以将视频的帧转换为图像。但显然这应该在 ImageDocument
上禁用,并且仅在 VideoDocument
.
上启用
如果第一响应者响应 -captureFrame
,则启用 NSMenuItem
VideoDocumentController
有一个方法,-captureFrame
,所以它被启用了。
ImageDocumentController
没有,所以菜单项永远不会启用。
但是,有一些特定的 VideoDocument
我不想启用该菜单项。什么是我禁用此菜单项以处理特殊情况的最佳方法?
在您的 VideoDocument
class 中,覆盖 NSDocument
方法 validateUserInterfaceItem:
。或者,您可以在 NSDocumentController
的子 class 中覆盖 validateUserInterfaceItem:
。请务必调用 super
以保留此方法的内置功能。有关示例,请参阅 Apple's docs on UI validation。
我有一个 NSMenuItem
是 enabled/disabled 基于第一响应者是否响应特定选择器。
我的问题是在某些情况下我不希望为第一响应者启用该项目。
但我不能在运行时有条件地删除方法定义以禁用菜单项
举例说明我的意思:
我有一个基于 NSDocument
的应用程序,我有两个主要的子类——一个 ImageDocument
和一个 VideoDocument
我有一个名为 "Capture Frame" 的 NSMenuItem
,它可以将视频的帧转换为图像。但显然这应该在 ImageDocument
上禁用,并且仅在 VideoDocument
.
如果第一响应者响应 -captureFrame
NSMenuItem
VideoDocumentController
有一个方法,-captureFrame
,所以它被启用了。
ImageDocumentController
没有,所以菜单项永远不会启用。
但是,有一些特定的 VideoDocument
我不想启用该菜单项。什么是我禁用此菜单项以处理特殊情况的最佳方法?
在您的 VideoDocument
class 中,覆盖 NSDocument
方法 validateUserInterfaceItem:
。或者,您可以在 NSDocumentController
的子 class 中覆盖 validateUserInterfaceItem:
。请务必调用 super
以保留此方法的内置功能。有关示例,请参阅 Apple's docs on UI validation。