在关闭时以模式方式显示没有声音的 NSPopover

Present an NSPopover Modally Without Sound on Close

提问人:CentrumGuy 提问时间:10/27/2023 更新时间:10/27/2023 访问量:33

问:

有谁知道我将如何在不关闭错误声音的情况下呈现模态?NSPopover

我目前正在这样做以显示弹出框:

let popover = NSPopover()
popover.delegate = self
popover.contentViewController = contentController
popover.behavior = .transient
popover.show(relativeTo: self.bounds, of: self, preferredEdge: NSRectEdge.maxY)
NSApplication.shared.runModal(for: popover.contentViewController!.view.window!)

目前效果很好,除了当我通过单击原始窗口关闭弹出框时,我从macOS收到错误声音。如何防止播放此声音,但仍以模式显示弹出框?

谢谢:)

Swift macOS Cocoa AppKit

评论

0赞 Willeke 10/27/2023
删除时会发生什么?runModal
0赞 CentrumGuy 10/27/2023
如果我删除 runModal,后台窗口将接受交互(例如滚动滚动视图)。预期的效果是背景窗口不接受交互,直到我单击它,此时它就会被关闭。NSPopover
0赞 Willeke 10/27/2023
这就是弹出窗口的工作原理。工作表是模态的。
0赞 CentrumGuy 10/27/2023
它不是模式的,因为您仍然可以与显示它的窗口进行交互,例如在滚动视图上滚动。手动制作弹出框模式会导致在按下背景窗口时播放声音,我想关闭这种效果
0赞 Willeke 10/27/2023
您是否尝试过使用本地事件监视器 () 捕获鼠标事件?NSEvent.addLocalMonitorForEvents(matching:handler:)

答: 暂无答案