Один из способов захвата событий клавиатуры включает создание подклассов:
- Подкласс вашего полноэкранного класса (например, NSView).
- Добавьте метод
- (void) keyDown:(NSEvent *)theEvent
к реализации подкласса.
- Откройте InterfaceBuilder и выберите полноэкранный класс, который вы ранее создали.
- Измените его класс на ваш новый подкласс.
Подкласс выглядит примерно так:
MySubclass.h
@interface MySubclass : NSView {
}
@end
MySubclass.m
#import <Carbon/Carbon.h>
@implementation MySubclass
- (void)keyDown:(NSEvent *)theEvent
{
switch([theEvent keyCode]) {
case kVK_Escape:
NSLog(@"ESC");
// Call the full-screen mode method
break;
default:
[super keyDown:theEvent];
}
}
@end
Это не связывает клавишу ESC
с элементом меню, но дает вам эквивалентную функциональность (и немного большую гибкость, поскольку вы можете перехватывать все события клавиатуры).