You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS Sonoma沙盒应用中NSSavePanel带accessoryView时触发默认保存动作的Workaround可行性问询

macOS Sonoma沙盒应用中NSSavePanel带accessoryView时触发默认保存动作的Workaround可行性问询

各位好,我最近碰到了macOS Sonoma上的一个奇怪bug:在沙盒化的应用里,当NSSavePanel添加了accessoryView之后,按下回车键没法触发默认的保存动作,但这个功能在Ventura及更低版本的系统里都是正常工作的。

我排查了一下,按回车本来应该会在NSResponder响应链中调用performKeyEquivalent:方法,但现在因为accessoryView的存在,这个流程在Sonoma里失效了。

我自己想了一个 workaround 思路:在响应链中拦截回车键(包括小键盘的回车)事件,手动调用NSSavePanel的performKeyEquivalent(with:)方法,代码如下:

import Carbon.HIToolbox.Events
override func performKeyEquivalent(with event: NSEvent) -> Bool {

  if let savePanel, event.type == .keyDown && (event.keyCode == UInt16(kVK_Return) || event.keyCode == UInt16(kVK_ANSI_KeypadEnter)) {
      savePanel.performKeyEquivalent(with: event)
  } else {
      super.performKeyEquivalent(with: event)
  }
}

想请教一下大家,这个方案在沙盒应用里是可行的吗?直接这么写能不能解决这个问题?

(附上相关界面截图:)
NSSavePanel带accessoryView的界面

备注:内容来源于stack exchange,提问作者Marek H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 10:35:26