2015-11-21 66 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

相關問題