【问题标题】:How can I hook up NSWindow's initialFirstResponder when using Storyboards in InterfaceBuilder?在 InterfaceBuilder 中使用 Storyboard 时如何连接 NSWindow 的 initialFirstResponder?
【发布时间】:2015-08-13 14:33:51
【问题描述】:

我对使用故事板似乎在 NSWindows/NSWindowControllers 和 NSViews/NSViewControllers 之间设置的墙感到沮丧。一个具体的例子:如果整个视图层次结构在一个单独的场景中并且不能被引用,那么 NSWindow 上的 initialFirstResponder 出口有什么用?

我想将名为“progred”的 initialFirstResponder 的窗口设置为视图控制器场景中的“内容视图”视图,但您不能跨场景进行 IBOutlet 引用。我非常乐意将 ViewController 和 Window 放在同一个场景中,但我似乎无法让它与我尝试从一个场景到另一个场景进行的所有拖放操作一起工作,甚至试图从工具箱中添加一个新的。看来您需要使用 segue 关系将 NSViewController 分配给 NSWindow。

我已经用谷歌搜索了,但我没有找到任何关于这个问题的信息,这可能只是意味着我错过了一些明显的东西,因为我对 Storyboards 很陌生,因为我无法想象我是第一个注意到这一点的人: )。

【问题讨论】:

  • 鉴于 WWDC 2015 会议的标题,我有一种强烈的预感,IB 近期众所周知的缺陷将通过我们将在本周一看到的更新得到解决。

标签: xcode macos cocoa interface-builder xcode-storyboard


【解决方案1】:

我已经在 swift (Xcode 6.3.1) 中经历过这个。尽管所有的 doco 和建议都说“控制阻力......”,但 IB 似乎无法做我们想做的事情。我的(最终)解决方案/解决方法是在视图控制器的 viewWillAppear 中的代码中设置它。我尝试了各种方法,直到遇到一些苹果文档,它声明必须在显示窗口之前设置 initialFirstResponder。希望这会有所帮助。

顺便提一下,注意默认的 Window 行为是“可恢复的”,这似乎会重新启动(重建的)应用程序,并将焦点放在应用程序被杀死的最后一个字段中......叹息

【讨论】:

    猜你喜欢
    • 2015-08-21
    • 2016-04-14
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    相关资源
    最近更新 更多