2011-05-28 82 views
0

我做了一個NSViewController的實例,並將它作爲子視圖添加到主窗口的內容視圖中。我希望能夠捕獲鍵盤事件,但我不知道如何實現它。經過一番研究,我瞭解到我需要在NSViewController中實現acceptsFirstResponderkeyUp:event:keyDown:event:方法,但在此之後,我仍然沒有工作的事情。keyup keydown方法NSViewController

- (void)applicationDidFinishLaunching:(NSNotification*)aNotification { 
    /* GViewController subview of NSViewController */ 
    GViewController *g = [[GViewController alloc] initWithNibName:@"GViewController" bundle:nil]; 
    [contentView addSubview: g]; 
} 

回答

1

這些方法都必須存在於NSView,不NSViewController一個子類。它也沒有任何意義去做addSubview:someViewController;該方法的論點需要是一個觀點。

+1

值得一提的是,與窗口控制器相反,視圖控制器不會自動添加到響應器鏈中。 – 2011-05-28 23:01:58

+1

這不完全正確。 NSViewController實現了acceptFirstResponder,keyUp:和keyDown :. NSViewController和NSView都是從NSResponder派生而來的,NSResponder是這些方法所在的。但是,addSubview:應該被賦予NSView而不是控制器是正確的。而且,正如Bavarious所說,這隻有在NSViewController已被添加到響應者鏈中時纔會起作用。 – 2013-05-14 19:40:23