1

我正在使用 Xcode5 为 MacOSX 开发一个应用程序

我的初始窗口是基于 NSObjectController 的,我正在尝试使用我在 NSWindowControllers 上使用的常用方法来捕获键盘事件

-(void)keyDown:(NSEvent *)theEvent{}

但这并没有捕捉到任何东西......还有其他方法可以完成这样的任务吗????

提前感谢您的支持

4

1 回答 1

1

还有另一种方法可以让它在 NSObjectController 上工作......

例如,这会捕获左键和右键....

@interface MyNSObjectController(){
    id          eventMonitor; 
}

@end

@implementation MyNSObjectController
- (void) awakeFromNib{
    [self captureKeyDownEvents];
}

-(void)captureKeyDownEvents{
    NSEvent  *(^handler)(NSEvent*)  = ^(NSEvent *theEvent) {
        NSObjectController *targetWindow          = self;
        if (targetWindow != self) {
            return theEvent;
        }

        NSEvent *result = theEvent;
        if (theEvent.keyCode == 123) { //left arrow
            NSLog(@"you just pressed left key");
            result = nil;
        }

        if (theEvent.keyCode == 124) { //right arrow
            NSLog(@"you just pressed right key");
            result = nil;
        }

        return result;
    };
    eventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask handler:handler];
}

-(void)dealloc{
    [NSEvent removeMonitor:eventMonitor];
}

@end
于 2014-07-03T18:44:16.473 回答