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 に答える