Отключить вырезать и / или вставить в ObjC - PullRequest
1 голос
/ 08 июля 2011

Я бы хотел отключить вырезание и / или вставку в строке меню во время выполнения в моем приложении ObjC. Я знаю, что это возможно в iOS, используя - (BOOL) canPerformAction: (SEL) aВыбрать с отправителем: (id) отправитель

Есть ли что-нибудь похожее для MacOS?

Спасибо

1 Ответ

2 голосов
/ 08 июля 2011

Существует 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 , который выполняет ту же функцию, но используется только для проверки элементов меню вместо всех элементов интерфейса. Если вы его не реализуете, система вернется к стандартной проверке.

...