Во-первых, убедитесь, что вы понимаете путь ключевых событий и проверка пользовательского интерфейса .
Я думаю, что лучший способ отключить упомянутые вами действия -создание подклассов NSTextView и отключение связанных с ними пунктов меню, объявляя текстовое представление соответствующим NSUserInterfaceValidations
и записывая метод проверки:
- (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)anItem {
SEL action = [anItem action];
if (@selector(selectAll:) == action || // command-a
@selector(centerSelectionInVisibleArea:) == action || // command-j
@selector(print:) == action || // command-p
@selector(underline:) == action) { // command-u
return NO;
}
else return [super validateUserInterfaceItem:anItem];
}
Однако это не мешает пользователю скрыть приложение с помощью Command + H,Чтобы отключить эту комбинацию клавиш, вы можете либо удалить ее эквивалент ключа в MainMenu XIB, либо вы можете создать подкласс NSApplication и переопределить hide: