在我的应用程序中,我将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)po
[alert.window valueForKey:@"level"]
8
#define NSModalPanelWindowLevel kCGModalPanelWindowLevel
解:
使用表
[alert beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse response){ }];
用自己的方法混淆实现
runModal
。将
NSAlert
功能重新创建为NSWindow
/ NSPanel
的子类(不继承NSAlert
),并在需要显示时调用showWindow:
。关于objective-c - 设置 cocoa 中NSAlert的级别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32837468/