gpt4 book ai didi

objective-c - 我可以有条件地禁用仅在第一响应者响应选择器时启用的 NSMenuItem 吗?

转载 作者:行者123 更新时间:2023-12-03 17:38:19 25 4
gpt4 key购买 nike

我有一个 NSMenuItem,它根据第一响应者是否响应特定选择器来启用/禁用。

我的问题是,在某些情况下,我希望为第一响应者启用该项目。

但我不能只是在运行时有条件地删除方法定义来禁用菜单项

举个例子来说明我的意思:
我有一个基于 NSDocument 的应用程序,并且有两个主要子类 - 一个 ImageDocument 和一个 VideoDocument

我有一个名为“Capture Frame”的NSMenuItem,它将视频的一帧转换为图像。但显然这应该在 ImageDocument 上禁用,并且仅在 VideoDocument 上启用。

如果第一个响应者响应 -captureFrame,则启用 NSMenuItem

VideoDocumentController 有一个方法 -captureFrame,因此它已启用。ImageDocumentController 没有,因此菜单项永远不会启用。

但是,我不希望为某些特定的VideoDocument启用该菜单项。对我来说禁用此菜单项以处理特殊情况的最佳方法是什么?

最佳答案

在您的 VideoDocument 类中,重写 NSDocument 方法 validateUserInterfaceItem:。或者,您可以在 NSDocumentController 的子类中重写 validateUserInterfaceItem:。请务必调用 super 以保留此方法的内置功能。请参阅Apple's docs on UI validation举个例子。

关于objective-c - 我可以有条件地禁用仅在第一响应者响应选择器时启用的 NSMenuItem 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33508769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com