目标-C中的keydown

Mut*_*tur -1 cocoa objective-c nsevent keydown

[第一次获奖后更新]我试图找到一种方法来使用和实现Objective C中的keyDown选项.但是当我尝试它时,它总是失败...

谁能给我一个如何做到这一点的例子.我理解Objective C很好,不需要完整的解释.

我删除了该方法,-(void) keyDown因为它无法正常工作.

这是我现在的代码:

#import <Cocoa/Cocoa.h>

@interface ViewController : NSView {
    IBOutlet id pressLabel;
}

@end



#import "ViewController.h"

@implementation ViewController

-(BOOL) acceptsFirstResponder
{
    return YES;
}

-(BOOL) becomeFirstResponder
{
    return YES;
}

-(BOOL) resignFirstResponder
{
    return YES;
}

-(void)keyDown:(NSEvent *)theEvent
{
    NSString *theUpArrow = [NSString stringWithFormat:@"%c",NSUpArrowFunctionKey];
    if( [[theEvent characters] isEqualToString:theUpArrow]){
        [pressLabel setStringValue:@"Pressed"];
    } else {
        [super keyDown:theEvent];   
    }
}

@end
Run Code Online (Sandbox Code Playgroud)

Chu*_*uck 7

keyDown:是一种NSResponder方法,通常在视图中实现.此类名为Controller,它表示它不是视图,因此不会接收按键事件.您可能希望将其放在视图中.

  • @Muttur:查克说的话.看一下[Responder Chain Doc](http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3 -SW2)理解为什么这个对象没有被`keyDown:`调用它. (2认同)