1

我创建一个 windows 有一个NSSplitview. 它有两个子视图,视图A 和视图B,它们有一些子视图。如果 viewA 或其子视图获得焦点,则将窗口的标题设置为 viewA 的 stringValue,并将 viewB 设置为依此类推。

我该怎么做?我尝试重写视图的

成为/访问/reignFirstResponser

对于 viewA/B 或它们的 subView (a NSTableView) 但失败了。

e,我再次尝试将 tablview 上的 becomeFirstresponse 覆盖为

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 方法。

4

1 回答 1

0

尝试在 NSView 类中覆盖 canBecomeKeyView

-(BOOL) canBecomeKeyView
{
    return YES;
}
于 2012-11-18T08:13:52.473 回答