Метод keyUp NSWindowController воспроизводит звук

Я хотел бы иметь возможность использовать табличное представление в моем NSWindowController, используя только ключи. Клавиши вверх и вниз уже работают, поэтому все, что мне нужно, это клавиша ввода для выбора. Я делаю это с помощью метода keyUp в моем NSWindowController:

- (void)keyUp:(NSEvent *)the Event {
    if (theEvent.keyCode == 36) // Enter key
         // Do stuff
}

Он работает нормально, единственная проблема в том, что всякий раз, когда я нажимаю ввод, компьютер воспроизводит системный звук. Кто-нибудь знает, как я могу отключить звук, или, может быть, другой способ сделать это?


person bstewart    schedule 17.10.2012    source источник


Ответы (2)


Вы должны вызвать [super keyUp:theEvent]; по умолчанию

person IluTov    schedule 18.10.2012
comment
Я добавил это, но звук все еще воспроизводится. Есть ли определенное место, которое нужно добавить? - person bstewart; 20.10.2012
comment
обязательно сделайте то же самое с методами keyDown - person IluTov; 20.10.2012
comment
Итак, я только что понял, что звук все еще воспроизводится, даже если я не переопределяю keyUp. Таким образом, проблема должна быть связана с моим окном, а не с событием. У вас есть идеи, в чем может быть проблема? - person bstewart; 20.10.2012
comment
Представление должно позволять принимать первого респондента, и вы должны выполнить [super keyUp:event]; в каждом супервиде. - person IluTov; 20.10.2012

Итак, вот что я сделал, чтобы отключить звук для всех, кто хочет знать. Создайте собственный класс для своего представления и переопределите этот метод:

- (BOOL)performKeyEquivalent:(NSEvent *)theEvent {
    [super performKeyEquivalent:theEvent];
    return YES;
}
person bstewart    schedule 22.10.2012
comment
Или вы можете добавить метод обработчика событий с помощью NSEvent.addLocalMonitorForEventsMatchingMask([.KeyUpMask], handler:onKeyUp), а затем вернуть nil в методе onKeyUp. его обрабатывает такой обработчик событий, как описано выше. - person Sentry.co; 12.08.2016