我根据第一个响应者是否响应特定选择器来启用/禁用NSMenuItem
。
我的问题是我有条件不想要为第一个响应者启用该项目。
但我不能在运行时有条件地删除方法定义以禁用菜单项
以我的意思为例:
我有一个基于NSDocument
的应用程序,我有两个主要的子类 - ImageDocument
和VideoDocument
我有一个名为“捕获帧”的NSMenuItem
,它将视频帧转换为图像。但很明显,这应该在ImageDocument
上停用,并且仅在VideoDocument
上启用。
如果第一个响应者回复NSMenuItem
-captureFrame
VideoDocumentController
有一个方法-captureFrame
,因此已启用。
ImageDocumentController
没有,因此菜单项永远不会启用。
但是,有一些特定的VideoDocument
我不希望启用该菜单项。对于我来说,禁用此菜单项以处理特殊情况的最佳方法是什么?
答案 0 :(得分:2)
在VideoDocument
班级中,覆盖NSDocument
方法validateUserInterfaceItem:
。或者,您可以覆盖validateUserInterfaceItem:
的子类中的NSDocumentController
。请务必致电super
以保留此方法的内置功能。有关示例,请参阅Apple's docs on UI validation。