Objective c 在ObjC中禁用剪切和/或粘贴

Objective c 在ObjC中禁用剪切和/或粘贴,objective-c,macos,paste,cut,Objective C,Macos,Paste,Cut,我想在我的ObjC应用程序中,在运行时禁用菜单栏中的剪切和/或粘贴。我知道在iOS中使用 -(BOOL)canperformation:(SEL)一个选择器,带sender:(id)sender MacOS有类似的产品吗 谢谢有一个通用协议,用于验证项目。您只需实现validateUserInterfaceItem:方法并返回NO以禁用该操作 - (BOOL)validateUserInterfaceItem:(id < NSValidatedUserInterfaceItem >)

我想在我的ObjC应用程序中,在运行时禁用菜单栏中的剪切和/或粘贴。我知道在iOS中使用 -(BOOL)canperformation:(SEL)一个选择器,带sender:(id)sender

MacOS有类似的产品吗

谢谢

有一个通用协议,用于验证项目。您只需实现
validateUserInterfaceItem:
方法并返回NO以禁用该操作

- (BOOL)validateUserInterfaceItem:(id < NSValidatedUserInterfaceItem >)anItem {
    if([anItem action] == @selector(cut:) ||
       [anItem action] == @selector(copy:) ||
       [anItem action] == @selector(paste:)) return NO;
    return [self respondsToSelector:[anItem action]];
}
-(BOOL)validateUserInterfaceItem:(id)一个项目{
如果([anItem action]==@选择器(剪切:)||
[anItem action]=@选择器(副本:)||
[anItem action]=@选择器(粘贴:))返回编号;
返回[self respondsToSelector:[anItem action]];
}

还有一个,它执行相同的功能,但仅用于验证菜单项,而不是所有界面项。如果不实现,系统将返回标准验证。

对不起,我必须将此代码放在哪里?在应用程序代理中?我从来没有使用过这个协议,所以我不知道从哪里开始。我必须以某种方式将菜单项“连接”到它吗?谢谢他们应该被安置在任何接受行动的地方。这通常是包含数据的控件,例如文本视图,但可以是文档或窗口控制器。如果您计划始终禁用这些方法,则可以将目标更改为其他对象,这样您只需将这些方法添加到一个对象。首先,感谢您的支持。第二:假设我希望剪切/粘贴始终以标准方式进行,但我的NSImageView是第一响应者。我知道我可以使NSImageView完全不可编辑,但我需要让它可编辑,并完全控制剪切/粘贴的状态(启用/禁用)。我已经尝试将该代码放在NSImageView的子类实现中,但它似乎不起作用。。。我错在哪里?也许NSImageView实现了
NSMenuValidation
,覆盖了您的方法。但是,NSImageView还有一个
setAllowsCutCopyPaste:
方法。调用
[myImageView setAllowsCutCopyPaste:NO]
就是这种情况下需要做的所有事情。正如我之前所说,我知道这种方法,但它不是我想要的,因为ti禁用/启用剪切、复制和粘贴,但我需要保持启用复制。。。我快发疯了。。。