我在Swift项目中使用NSBorderlessWindowMask作为我的主窗口(没有故事板),当我加载Subview时,NSTextfield出口不是keybard可编辑的。我已经把这段代码放在初始化上了:
self.window?.makeKeyWindow() self.window?.becomeKeyWindow()
这允许插座是"蓝色"喜欢焦点,但键盘编辑被禁用,我可以复制/粘贴文本字段
答案 0 :(得分:1)
您需要使用NSWindow
的自定义子类并覆盖canBecomeKeyWindow()
才能返回true。默认情况下,对于没有标题栏的窗口,它返回false(如文档所述)。
您可能希望对canBecomeMainWindow()
执行相同操作。
此外,请勿拨打becomeKeyWindow()
(除非在覆盖中拨打super
)。 Cocoa调用它来通知窗口它已成为关键窗口。它不会指示窗口成为关键窗口。
答案 1 :(得分:1)
我发现了这个问题的一个很棒的解决方法: 基本上设置在开始NSWindow掩码为NSTitledWindowMask,当加载应用程序时,删除设置新掩码NSBorderlessWindowMask
func applicationWillFinishLaunching(notification: NSNotification) {
self.window?.titleVisibility = NSWindowTitleVisibility.Hidden
self.window?.styleMask = NSTitledWindowMask // adds title bar
}
func applicationDidFinishLaunching(aNotification: NSNotification) {
self.window?.makeKeyWindow()
self.window?.becomeKeyWindow()
self.window.setIsVisible(true)
self.window?.styleMask = NSBorderlessWindowMask // removes title bar
}