1

私のアプリケーションでは、NSWindow をサブクラス化し、ウィンドウ レベルを 25 に設定しました。ウィンドウ レベルが 25 であるため、アラート ボックスとエラー ダイアログ ボックスがウィンドウによって隠されていました。

NSAlert のレベルを設定する機会はありますか

4

2 に答える 2

4

初めに。25 のようなマジック ナンバーは使用しないでください。

ウィンドウ レベルを設定する方法はありますが、runModal固定windowLevel定数kCGModalPanelWindowLevel8 を使用するため役に立ちません。次のように確認できます。

[self.window setLevel:25];
NSAlert *alert = [NSAlert alertWithMessageText:@"1" defaultButton:@"2" alternateButton:nil otherButton:nil informativeTextWithFormat:@"3"];
[alert runModal];

(lldb) ポ[alert.window valueForKey:@"level"]

8

#define NSModalPanelWindowLevel kCGModalPanelWindowLevel

解決:

  1. 使用シート

    [alert beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse response){ }];
    
  2. 独自のもので実装runModalをスウィズルします。

  3. 機能を/NSAlertのサブクラスとして再作成し(継承しないでください)、表示する必要がある場合は呼び出します。NSWindowNSPanelNSAlertshowWindow:

于 2015-09-29T11:11:16.137 に答える