我创建一个具有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;
}

10-04 22:18
查看更多