我正在学习如何使用Cocoa构建程序.我正在使用一个样本Apple应用程序来记录网络摄像头的视频.我想通过捕获按键开始和停止视频.我试图覆盖keydown事件,但我已经读过它是不可能的NSObject.我该如何处理这类活动?
应用程序NSObject类扩展了一个类.
这是代码:
- (void)keyDown:(NSEvent *)event {
NSLog(@"Hi there");
NSString *characters = [event characters];
if ([characters length]) {
switch ([characters characterAtIndex:0]) {
case NSUpArrowFunctionKey:
NSLog(@"Key UP");
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图覆盖Keydown事件,但我已经读过它在NSObject中是不可能的.
正确.只有响应者才能响应事件.
我该如何处理这类活动?
实施响应者.子类化NSWindow或NSWindowController将起作用.确保将实际的窗口或窗口控制器作为子类的实例.
Cocoa文档进一步解释.
应用程序类扩展了NSObject类.
为什么?通常,应用程序包的主要类是NSApplication或其子类 - 并且没有很多很好的理由来继承NSApplication.
PS:开始学习MacOS编程是一本非常好的书?
我没有学习Hillegass的书,我自己(我坚持使用Apple的文档),但这是一个非常受欢迎的推荐,我已经阅读过,并且可以告诉你这很好.