最近我将Mac升级到了Catalina,并看到了NSAlert()的奇怪问题。
打开任何警报后,控制台中都会出现以下错误,并且警报自动关闭,而没有任何用户单击“确定”按钮。
控制台错误:
this class is not key value coding-compliant for the key modalWindow.' with user dictionary {
NSTargetObjectUserInfoKey = "<ProjectName.AppDelegate: 0x100b07400>";
NSUnknownUserInfoKey = modalWindow;
}
下面是我显示警报的代码。
let myPopup: NSAlert = NSAlert()
myPopup.messageText = messageText
myPopup.informativeText = infoText
myPopup.alertStyle = NSAlert.Style.warning
myPopup.addButton(withTitle: NSLocalizedString("OK", comment: "Button Text"))
let res = myPopup.runModal()
FYI:这是Mac App,使用swift Xcode11(与Xcode 11.1和11.2一起试用)
答案 0 :(得分:0)
最后想通了,
在我的应用程序中,我们确实支持脚本编写,因此我在AppDelegate文件中添加了以下代码:
func application(_ sender: NSApplication, delegateHandlesKey key: String) -> Bool {
return true
}
由于我一直返回true,所以它始终会与NSOpenPanels,NSSavePanels和NSAlert产生问题,并且我更改了以下代码,并且工作正常,没有任何问题。
func application(_ sender: NSApplication, delegateHandlesKey key: String) -> Bool {
if key == "[.sdf file KEY HERE]"{
return true
}
return false
}
请注意,我仅在最新的Catalina操作系统中遇到此问题,在以前的操作系统中我没有任何问题。