1

私はウィンドウを作成しますNSSplitview。viewAとviewBの2つのサブビューがあり、いくつかのサブビューがあります。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 に答える