我知道如何在iOS中执行此操作,但无法在Cocoa中找到它。
我想捕获键盘事件,我想我需要覆盖acceptFirstResponder方法来实现它(触发keyDown方法)。所以我创建了一个扩展NSCustomView的类,并试图在主窗口中添加它,但我无法理解如何做到这一点。到目前为止,我向主视图添加了自定义视图,然后尝试以编程方式添加它:
TestView *view = [[TestView alloc] init];
[[_window contentView] addSubview:view];
但这不起作用。那我怎么能这样做呢?
答案 0 :(得分:4)
要查看视图是否已添加到窗口,您可以覆盖视图的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, 0, 100, 200)];
[[_window contentView] addSubview:view];