NSAlert()runmodal此类与键modalWindow的键值编码兼容

时间:2019-11-01 10:05:42

标签: swift cocoa macos-catalina

最近我将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一起试用)

1 个答案:

答案 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操作系统中遇到此问题,在以前的操作系统中我没有任何问题。