[英]Guide for adding NSView to responder chain with Swift
我已经阅读了这份文件。 看到了这个 SO问题(以及其他问题)。 并看了一下本教程。 但是对于我的一生,我无法让自定义情节提要板正常工作。 我正在使用此 SO答案中找到的代码来引入新视图及其控制器。
基本上,在初始视图中为用户显示5个按钮,单击任何一个按钮都将导致另一个视图从左侧滑入。 一切正常,放置在新视图上的所有NSButtons
都会获得点击并执行应有的功能。 但是,文本字段完全不可访问:您可以选择其中的任何文本,但不能覆盖。
我假设我没有将新的视图/视图控制器正确地注入响应者链中(但是为什么按钮可以工作而文本字段却不能?)。
明智地使用
self.resignFirstResponder()
和
newViewController.becomeFirstResponder()
始终返回true。 我将它们放置在新视图的各种初始生命周期函数中,以及动画结束时的实际自定义NSViewControllerPresentationAnimator
中。
如果segue是预设的工作表,模式,弹出框或其他内容,则新视图会很好地接收所有操作/键入。 所以这绝对是我的代码。
我知道这不是很好的形式,但是我很生气:有人可以使用Swift一步一步地举例吗?
[编辑] 啊! 似乎是因为我的应用程序窗口中的“标题栏”未被选中,所以它拒绝接受第一响应者。 真可惜,我很喜欢没有标题的干净窗户。
就我而言,我希望App窗口没有标题栏。 如果在情节canBecomeMain
窗口的“ IB属性”部分中未选中“标题栏”选项,则需要子类化NSWindow并覆盖canBecomeMain
和canBecomeKey
:
import Cocoa
class BTVWindow: NSWindow {
override var canBecomeKey: Bool{
get {
return true
}
}
override var canBecomeMain: Bool{
get {
return true
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.