【发布时间】:2018-07-19 04:55:35
【问题描述】:
我有一个来自 MacOS 应用程序的 AppDelegate 的警告对话框,需要使用新信息进行更新。当新信息可用时,我想以编程方式关闭旧对话框并呈现新对话框。这两种方法我都试过了,都有问题:
-
使用
alert.runModal()如果我使用上述内容,则会根据需要显示模态。然后我可以稍后使用
lockWarningModal.window.close()关闭对话框,它可以使旧对话框消失,但它会冻结 UI,因此我无法再与之交互。我猜这是因为 @ 987654323@是同步的,主线程还是阻塞的。但是,我不知道如何发布。 -
使用
alert.beginSheetModal(for: NSApplication.shared.windows.last!) { (response) in }如果我使用上述方法并使用
NSApplication.shared.windows.last!.endSheet(alert.window)关闭对话框,那么这可以解决 UI 冻结问题。但是,对话框附加到主应用程序窗口,不会作为模态显示在前面。
如何实现可通过编程方式关闭的模态对话框?
【问题讨论】: