禁用ObjC中的剪切和/或粘贴

时间:2011-07-07 22:33:51

标签: objective-c macos paste cut

我想在我的ObjC应用程序中在运行时禁用菜单栏中的剪切和/或粘贴。我知道在iOS中可以使用      - (BOOL)canPerformAction:(SEL)aSelector withSender:(id)sender

MacOS有什么类似的东西吗?

谢谢

1 个答案:

答案 0 :(得分:2)

NSUserInterfaceValidations Protocol,用于验证项目的通用协议。您只需实现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]];
}

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