Macos 使用Swift将NSView添加到应答器链的指南

Macos 使用Swift将NSView添加到应答器链的指南,macos,cocoa,swift3,nsstoryboard,Macos,Cocoa,Swift3,Nsstoryboard,我读过这个文件。看到这样的问题(其中)。看了一下教程。但就我的一生而言,我无法让我的自定义故事板继续工作。我正在使用SO answer中的代码来引入新的视图和它们的控制器 基本上,用户在初始视图中会看到5个按钮,单击任何一个按钮都会导致另一个视图从左侧滑入。所有这些都可以正常工作,任何放置在新视图上的nsbutton都会收到单击并执行它们应该执行的操作。但是,文本字段是完全不可访问的:您可以选择其中的任何文本,但不能覆盖 我假设我没有将新的视图/视图控件正确地注入到响应器链中(但是为什么按钮工作

我读过这个文件。看到这样的问题(其中)。看了一下教程。但就我的一生而言,我无法让我的自定义故事板继续工作。我正在使用SO answer中的代码来引入新的视图和它们的控制器

基本上,用户在初始视图中会看到5个按钮,单击任何一个按钮都会导致另一个视图从左侧滑入。所有这些都可以正常工作,任何放置在新视图上的
nsbutton
都会收到单击并执行它们应该执行的操作。但是,文本字段是完全不可访问的:您可以选择其中的任何文本,但不能覆盖

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

明智地使用

self.resignFirstResponder()

始终返回true。我将它们放置在新视图的各种初始生命周期函数中,以及动画末尾的实际自定义
NSViewControllerPresentationAnimator

如果segue是一个预设的工作表、模态、popover或任何东西,那么新视图接收到的所有动作/键入都很好。所以这绝对是我的代码

我知道这不是一个好的形式,但我快发疯了:有人能用Swift提供一个循序渐进的例子吗


[编辑]啊!似乎是因为我在我的应用程序窗口中没有选中“标题栏”,所以它拒绝接收第一响应者。遗憾的是,我非常喜欢没有标题的干净窗口……

在我的例子中,我希望应用程序窗口没有标题栏。如果在情节提要窗口的IB属性部分取消选中标题栏选项,则需要将NSWindow子类并覆盖
canBecomeMain
canBecomeKey

import Cocoa

class BTVWindow: NSWindow {

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

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

文本字段是否可编辑?如果你能选择文本,它们会响应鼠标事件,并且在响应器链中。这就是奇怪的一点:不,它们不是。可选择但不可编辑。该视图的背景颜色也较浅,在预设的顺序转换后完全可操作。
import Cocoa

class BTVWindow: NSWindow {

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

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