2012-08-09 49 views
1

我想这样做,如果用户在他的键盘上按“返回”键,应用程序必须做一些事情。我尝试以下内容:对关键事件的反应

- (void)keyDown: (NSEvent *) event { 
     if ([event keyCode] == 36) { 
      [self doSmthFunction]; 
     } 
} 

但是当我按下“返回”时,我只听到嘟嘟声。


的完整代码

KeyEventController.m

#import "KeyEventController.h" 
#include "myCustomClass.h" 

@implementation KeyEventController 
- (void)keyDown: (NSEvent *) event { 
     if ([event keyCode] == 36) { 
       NSLog(@"log"); 
     } 
} 
@end 

KeyEventController.h:

#import <Cocoa/Cocoa.h> 

@interface KeyEventController : NSResponder 

@end 
+0

此代码在哪个类中?如果代码位于NSResponder的子类中,该代码应该可以工作。 – rdelmar 2012-08-10 02:19:23

+0

它是NSResponder – hockeyman 2012-08-10 05:59:37

+0

的子类您需要更多地解释您的应用程序设置方式。你是否在IB中为你的课程设了一个对象?你是否完全用代码创建了一些东西?您的代码没有问题,问题必须出现在您的应用程序结构中,或者存在一些缺失的连接。 – rdelmar 2012-08-10 06:02:52

回答

1

您可能需要重写acceptsFirstResponder,并返回YES。此外,您可能需要点击您的视图(或任何它被分类)以使其不发出哔声。我已经测试过了,有时候,似乎有必要做这些事情,有时候不行。

+0

非常感谢 – hockeyman 2012-08-10 06:12:20