我知道如何在iOS中做到这一点,但无法在
Cocoa中找到它.
我想捕获键盘事件,我想我需要覆盖acceptFirstResponder方法来实现它(触发keyDown方法).所以我创建了一个扩展NSCustomView的类,并试图在主窗口中添加它,但我无法理解如何做到这一点.到目前为止,我在主视图中添加了一个自定义视图,然后尝试以编程方式添加它:
TestView *view = [[TestView alloc] init]; [[_window contentView] addSubview:view];
但这不起作用.那我该怎么做呢?
解决方法
要查看视图是否已添加到窗口,您可以覆盖视图的viewDidMoveToWindow方法并记录[self window]的值以进行检查(如果它是nil,则视图已从窗口中删除):
- (void)viewDidMoveToWindow { NSLog(@"window=%p",[self window]); [super viewDidMoveToWindow]; }
您应该是NSView的子类,而不是NSCustomView,而initWithFrame是NSView的指定初始化程序,而不是init.
尝试:
TestView *view = [[TestView alloc] initWithFrame:NSMakeRect(0,100,200)]; [[_window contentView] addSubview:view];