我创建一个具有NSSplitview
的窗口。它具有两个子视图,分别为viewA和viewB,并且它们具有一些子视图。如果viewA或其子视图获得焦点,则将窗口的标题设置为viewA的stringValue,并将viewB设置为依此类推。
我该怎么做?我尝试重写视图的
成为/访问/ reignFirstResponser
用于viewA / B或其子视图(a NSTableView
),但失败。
e,我尝试再次覆盖在tablview上的成为firstFirstresponse的内容
BOOL ret = [super becomeFirstResponder];
[NSApp sendAction:@selector(requestString:) to:Nil from:self.window.windowController];
return ret;
有用!但是,通过编码,可以附加新的子视图。所以我需要一些更聪明,更清晰的方法。
我知道了!在窗口委托中,我将windowDidUpdate实现为:
- (void)windowDidUpdate:(NSNotification *)notification {
[NSApp sendAction:@selector(requestString:) to:Nil from:self.window.windowController];
}
-(IBAction)requestString:(id)sender方法是viewA / B的Controller方法。
最佳答案
尝试在NSView类中覆盖canBecomeKeyView
-(BOOL) canBecomeKeyView
{
return YES;
}