Все NSTableView в моем проекте не получают событие клавиатуры пробела - PullRequest
3 голосов
/ 14 марта 2012

NSTableView не получает событие клавиатуры пробела.

Когда я нажимаю keyUp или keyDown, выбор меняется правильно, но я не могу установить / снять флажок в первом столбце, нажавпробел.

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

Кроме того, я только что проверил для любого метода делегата в моем коде, чтоможет помешать:

- (void)sendEvent:(NSEvent *)event;
- (BOOL)handleEvent:(NSEvent *)event;
- (void) keyDown:(NSEvent *)event;

и прокомментировать их, но пробел все еще не работает.Спасибо

Ответы [ 2 ]

4 голосов
/ 14 марта 2012

Следует проверить, что функция выбора типа не использует ваши пробелы.Я видел эту проблему в прошлом.Вы должны быть в состоянии позвонить [yourTableView setAllowsTypeSelect:NO], чтобы отключить его.Однако, по какой-то причине, в одном случае единственный способ, которым я смог успешно обойти это, был реализовать метод NSTableViewDelegate -tableView:typeSelectStringForTableColumn:row: и вернуть nil:

- (NSString *)tableView:(NSTableView *)tableView typeSelectStringForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
    return nil;
}

Это отключит выбор типа все вместе.В моем случае это было хорошо.Как объяснено в документации:

Вернуть nil, если не нужно искать строку или tableColumn.

Другой вариант может заключаться в реализации -tableView:shouldTypeSelectForEvent:withCurrentSearchString: и возврате NO, есликод события - 49 (пробел).Таким образом, выбор типа остается включенным, игнорируется только пробел.

Это всего лишь одна идея.Это может на самом деле не быть причиной вашей проблемы, но в прошлом я видел идентичные симптомы, и причиной был выбор типа.

2 голосов
/ 11 апреля 2012

Я действительно выяснил причину. Это не правда, что пробел проверяет элементы таблицы по умолчанию.

Работает только в том случае, если выбран переключатель «Системные настройки»> «Клавиатура»> «Сочетания клавиш»> «Все элементы управления».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...