Переопределение keyDown: в категории NSTableView отключает обработку клавиш со стрелками - PullRequest
0 голосов
/ 19 декабря 2011

У меня NSTableView, и у меня есть некоторые проблемы с его поведением по умолчанию.

Если я переопределил метод keyDown: в категории следующим образом:

- (void) keyDown:(NSEvent *)event {
    [super keyDown:event];
}

Я больше не могу изменить выбор строки с помощью клавиш со стрелками на клавиатуре. Это почему?

1 Ответ

7 голосов
/ 20 декабря 2011

в категории NSTableView.

В категории из NSTableView, super относится к суперклассу NSTableView (NSControl), а не NSTableView, как это было бы в подклассе .Вы передаете событие в NSControl версию keyDown:, которая ничего не знает о табличных представлениях и не может обрабатывать клавиши со стрелками так, как вы хотите.

Если вы переопределяете метод вкатегория, нет способа вызвать оригинальный метод.Практически никогда не стоит делать это на классах фреймворка (чей источник вам недоступен).Используйте подкласс.

Ср. Использование Super в категории Objective C? и Является ли вызов super в категории таким же, как вызов его в подклассе?

...