CFUserNotificationDisplayAlert和CFUserNotificationDisplayNotice会创建非模态窗口,这很糟糕,因为如果您选择原始应用程序窗口,它可能会使您的应用程序UI处于非常不受欢迎的状态(消息框已隐藏但应用程序未响应)。
旧SystemAlert
是模态的,但这个不完全支持Unicode字符串。
如何在Mac下将消息框显示为模式窗口?我正在寻找类似于Windows的MessageBox的东西吗?
答案 0 :(得分:5)
我已使用CFUserNotificationDisplayAlert
实现它,并且在用户关闭MessageBox之前不会返回。
如果您想查看代码,我会在MessageBox function in Mac中看到它 在那里你会发现为mac实现的MessageBox函数,它只为MB_OKCANCEL实现,但只需要更多的代码就可以覆盖整个MessageBox标志和返回值,这是一个很好的起点。
答案 1 :(得分:4)
看起来CreateStandardAlert
是正确的解决方案,因为这个模态。
DialogRef theItem;
DialogItemIndex itemIndex;
CreateStandardAlert(kAlertNoteAlert, CFSTR("aaa"), CFSTR("bbb"), NULL, &theItem);
RunStandardAlert(theItem, NULL, &itemIndex);
答案 2 :(得分:1)
查看NSBeginAlertSheet
函数或NSApp:
- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow
modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo
可能是你想要的。 Here也是一篇关于使用工作表的好文章。