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

Posted

技术标签:

【中文标题】如何在响应者链中保持隐藏视图?【英文标题】:How to keep a hidden view in responder chain? 【发布时间】:2015-10-09 10:56:26 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

也就是说,也许首先考虑一下您是否有正确的设计,因为从用户界面的角度来看,让不可见的按钮响应关键事件是一个有问题的设计(这反映在苹果试图阻止它)。也许这些键盘事件真的应该由视图层次结构中更高的视图、窗口或某些此类实体来处理?

【讨论】:

感谢您的回答!我已经这样做了(在窗口背景的某处透明),但这只是一个黑客。此外,我同意按钮应该是可见的才能使用它们。 但在我的特殊情况下(计算器),大多数用户无论如何都会使用物理键盘,这就是为什么我想给他们减少应用程序可见空间的可能性。 有道理。看来黑客是必要的。

以上是关于如何在响应者链中保持隐藏视图?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UIViewController 不在其视图的响应者链中?

1% 的时间没有处理 UIButton 事件:我应该在我的响应链中责备谁?

ViewController 偶尔会在响应者链中丢失?

UIControl 如何将所有触摸事件传递给响应者链中的下一个对象?

响应者链

iphone响应程序链中操作方法所需的可见性是啥?