Как отключить эти сочетания клавиш в NSTextView? - PullRequest
1 голос
/ 16 ноября 2011

У меня есть NSTextView, который я использую как полноэкранный холст для писем.

Следующие комбинации клавиш делают вещи, которые я не хочу делать (например, скрыть мое окно, заблокировать компьютер).

Как отключить их, чтобы они не вызывались?

  • Command-A
  • Консольная ч
  • Command-J
  • Консольная р
  • Консольная и

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

Во-первых, убедитесь, что вы понимаете путь ключевых событий и проверка пользовательского интерфейса .

Я думаю, что лучший способ отключить упомянутые вами действия -создание подклассов 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:

0 голосов
/ 16 ноября 2011

Переопределите NSEvents для этих комбинаций клавиш, чтобы они ничего не делали вместо того, что они обычно делают.

...