如何使用Cocoa调用keyDown方法?

时间:2015-11-21 12:05:31

标签: objective-c cocoa

#import "AppDelegate.h"

@interface AppDelegate ()

@property (weak) IBOutlet NSWindow *window;
@end

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application
}

- (void)applicationWillTerminate:(NSNotification *)aNotification {
    // Insert code here to tear down your application
}

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

- (IBAction)entrer:(NSTextField *)sender {
    [super keyDown];

    }
}



@end

我想调用上面的keyDown方法,但是我有一个错误 没有可见的NSObject接口声明选择器'keyDown' 如何从entrer方法调用我的void keyDown方法?

1 个答案:

答案 0 :(得分:1)

-keyDown:方法接受一个参数。因此,它的名称为-keyDown: ,带冒号。冒号是名称的必需部分,参数是调用方法的必需部分。

您可以使用以下方式调用它:

[self keyDown:nil];

但您必须确保-keyDown:方法可以处理nil参数。

或者,您可以获取或构造NSEvent的实例并传递该实例。确切地说,如何做到这一点取决于您通过致电-keyDown:来尝试完成的任务。

这让我们想到呼叫-keyDown:很奇怪。该方法通常由框架调用,以请求对象处理按键事件。你通常不会自己打电话。这就是为什么在NSEvent传递给它的地方不明显的部分原因,因为你在正常的事件处理机制之外调用它。