如何在响应链中保持隐藏视图?

How to keep a hidden view in responder chain?

我有一个 NSSplitViewController,在其中一个项目中,我有多个带键盘快捷键的按钮。

一旦用户隐藏项目,快捷方式就不会触发。 有什么方法可以将隐藏视图中的按钮保留为响应链的一部分吗?

根据 Apple's docs 看来,简单的答案是否定的。然而,一个简单的解决方法可能是将按钮移出可见区域,例如,将按钮的边界向右移动 10,000 左右。如果它们位于 scrollview/clipview 中,会展开以显示新位置的项目,那么这将不会很好地工作,但如果不是,它应该可以正常工作。如果它们在滚动视图中,那么您可能会想办法使它们完全透明,以达到类似的效果。

也就是说,也许首先值得考虑一下您的设计是否正确,因为从用户界面的角度来看,让不可见的按钮响应按键事件是一个有问题的设计(如事实上,Apple 试图阻止它)。也许这些键盘事件真的应该由视图层次结构中更高的视图处理,或者由 window 或类似的实体处理?