2015-11-21 33 views
-2
#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方法我空虚的keyDown方法?如何使用Cocoa调用keyDown方法?

+0

'[self keyDown]'? – Sulthan

+0

没有可见的NSObject接口声明选择器'keyDown',也可以在符号上点击' – MatR

+0

',你会看到'keyDown:'是'NSResponder'类的一个方法。例如'NSWindow'和'NSView'对该方法做出响应,因为它们是'NSResponder'的子类。 NSObject不。 – vadian

回答

1

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

你可以通过调用它:

[self keyDown:nil]; 

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

或者,您可以获取或构建NSEvent的实例并通过该实例。具体怎么做取决于你想通过调用-keyDown:来完成什么。

这给我们带来了一个事实,那就是想要打电话给-keyDown:。该方法通常由框架调用以请求对象处理按键事件。你通常不会自己调用它。这就是为什么它不知道从哪里得到NSEvent,因为你在正常的事件处理机制之外调用它。

+0

肯有一个很好的观点。对于我来说,添加一个'keyKey“的方法,可以在代码中的其他地方调用,而不是调用'keyDown'本身。 – dstudeba

相关问题