3

パーシスタント ウィンドウや標準メニューのないメニュー アプリケーションを作成しました。別のアプリケーションにフォーカスがあり、メニューレットを使用してウィンドウを開くようにトリガーすると、フォアグラウンド アプリケーションの背後に表示されます (ただし、画面に表示される他のアプリケーションよりも上に表示されます)。

基本的...

-(IBAction)aboutWindow:(id)sender {
    [NSBundle loadNibNamed:@"About" owner:self];
}

このウィンドウが最初に生成されたときに他のすべてのアプリケーションの上に表示されるように、誰かが私を正しい方向に向けることができますか?

[編集]

ウィンドウがリンクされたカスタム NSWindowController を使用して、makekeyandorderfront メソッドを呼び出す awakeFromNib を使用しようとしましたが、何もしていませんでした。

私は今NSBundle呼び出しの代わりに持っています:

NSWindowController* awc = [[NSWindowController alloc] initWithWindowNibName:@"About"];
[[awc window] makeKeyAndOrderFront:nil];

そして、それはウィンドウを生成しますが、それでもフォアグラウンドにはなりません

4

2 に答える 2

2

理解した。ウィンドウに問題はありませんでした。それはアプリケーションでした。これは、生成される前にウィンドウのないメニューレットとしての性質のため、フォアグラウンドにはありませんでした。最終的なコード:

-(IBAction)aboutWindow:(id)sender {
    NSWindowController* awc = [[NSWindowController alloc] initWithWindowNibName:@"About"];
    [[awc window] makeKeyAndOrderFront:nil];
    [[NSApplication sharedApplication] arrangeInFront:nil];
}
于 2010-04-26T18:08:44.407 に答える
1

あなたは試すことができますmakeKeyAndOrderFront:

たとえば、Aboutウィンドウのコントローラーで-コントローラーがウィンドウへの参照を次のように持っていると仮定しますmyWindow

- (void)awakeFromNib 
{
    [myWindow makeKeyAndOrderFront:nil];
}
于 2010-04-26T17:08:26.023 に答える