私のアプリケーションでは、NSWindow をサブクラス化し、ウィンドウ レベルを 25 に設定しました。ウィンドウ レベルが 25 であるため、アラート ボックスとエラー ダイアログ ボックスがウィンドウによって隠されていました。
NSAlert のレベルを設定する機会はありますか
私のアプリケーションでは、NSWindow をサブクラス化し、ウィンドウ レベルを 25 に設定しました。ウィンドウ レベルが 25 であるため、アラート ボックスとエラー ダイアログ ボックスがウィンドウによって隠されていました。
NSAlert のレベルを設定する機会はありますか
初めに。25 のようなマジック ナンバーは使用しないでください。
ウィンドウ レベルを設定する方法はありますが、runModal
固定windowLevel
定数kCGModalPanelWindowLevel
8 を使用するため役に立ちません。次のように確認できます。
[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
解決:
使用シート
[alert beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse response){ }];
独自のもので実装runModal
をスウィズルします。
機能を/NSAlert
のサブクラスとして再作成し(継承しないでください)、表示する必要がある場合は呼び出します。NSWindow
NSPanel
NSAlert
showWindow: