2012-06-27 34 views
4

我知道如何在iOS中做到這一點,但不能在可可中找到它。如何添加自定義NSView到窗口

我想捕獲鍵盤事件,我想我需要重寫accepFirstResponder方法來完成(keyDown方法被觸發)。所以我創建了一個擴展NSCustomView的類,並試圖將它添加到主窗口中,但我無法理解如何去做。到目前爲止,我增加了一個自定義視圖到主視圖,然後試圖以編程方式添加它像:

TestView *view = [[TestView alloc] init]; 
[[_window contentView] addSubview:view]; 

,但是這是行不通的。那我該怎麼做?

+0

教程或什麼都歡迎,我%#$丟失! :-( – momo

回答

4

要查看視圖已經被添加到一個窗口,你可以重寫視圖的viewDidMoveToWindow方法和日誌的[self window]值檢查(如果它是nil,那麼該觀點已經從一個窗口中刪除):

- (void)viewDidMoveToWindow 
{ 
    NSLog(@"window=%p", [self window]); 
    [super viewDidMoveToWindow]; 
} 

你應該繼承NSView,不NSCustomViewinitWithFrameNSView,不init指定的初始化。

嘗試:

TestView *view = [[TestView alloc] initWithFrame:NSMakeRect(0, 0, 100, 200)]; 
[[_window contentView] addSubview:view]; 
+0

@momo沒問題,'NSMakeRect'的東西需要一些工作,這取決於你想讓窗口適合視圖,反之亦然。 – trojanfoe

相關問題