0

我读过这个文件。看到这个SO 问题(其中包括)。并查看了教程。但是对于我的生活,我无法让我的自定义故事板 segue 工作。我正在使用SO 答案中的代码来引入新视图及其控制器。

基本上,用户在初始视图中会看到 5 个按钮,单击任何一个按钮都会导致另一个视图从左侧滑入。一切正常,任何NSButtons放置在新视图上的东西都会收到点击并做他们应该做的事情。但是,文本字段是完全无法访问的:您可以选择其中的任何文本,但不能覆盖。

我假设我没有将新的视图/视图控制器正确地注入到响应者链中(但是为什么按钮可以工作而文本字段却不能呢?)。

明智地使用

self.resignFirstResponder()

newViewController.becomeFirstResponder()

总是返回真。我已将它们放置在新视图的各种初始生命周期函数中以及NSViewControllerPresentationAnimator动画结束时的实际自定义中。

如果 segue 是预设工作表、模式、弹出框或其他任何东西,那么新视图可以接收所有操作/键入。所以这绝对是我的代码。

我知道这不是很好的形式,但我快疯了:有人可以提供一个使用 Swift 的分步示例吗?

[编辑]啊啊啊!似乎是因为我在我的应用程序窗口中未选中“标题栏”,所以它拒绝接受第一响应者。惭愧,我很喜欢没有标题的干净窗口....

4

1 回答 1

0

就我而言,我希望应用程序窗口没有标题栏。当故事板窗口的 IB 属性部分中的标题栏选项未选中时,您需要子类化 NSWindow 并覆盖canBecomeMainand canBecomeKey

import Cocoa

class BTVWindow: NSWindow {

    override var canBecomeKey: Bool{
        get {
            return true
        }
    }

    override var canBecomeMain: Bool{
        get {
            return true
        }
    }
}
于 2017-06-16T20:26:15.940 回答