我在 Swift 项目(没有情节提要)上的主窗口中使用 NSBorderlessWindowMask,当我加载子视图时,NSTextfield 插座不可键盘编辑。我已经把这段代码放在了初始化上:
self.window?.makeKeyWindow() self.window?.becomeKeyWindow()
这允许插座像焦点一样为“蓝色”,但键盘编辑被禁用,我可以在文本字段上复制/粘贴
我在 Swift 项目(没有情节提要)上的主窗口中使用 NSBorderlessWindowMask,当我加载子视图时,NSTextfield 插座不可键盘编辑。我已经把这段代码放在了初始化上:
self.window?.makeKeyWindow() self.window?.becomeKeyWindow()
这允许插座像焦点一样为“蓝色”,但键盘编辑被禁用,我可以在文本字段上复制/粘贴
您需要使用自定义子类NSWindow
和覆盖canBecomeKeyWindow()
来返回 true。默认情况下,它为没有标题栏的窗口返回 false(如文档所述)。
您可能希望对canBecomeMainWindow()
.
此外,永远不要打电话becomeKeyWindow()
(除了打电话super
覆盖)。Cocoa 调用它来通知窗口它已成为关键窗口。它不指示窗口成为关键窗口。
我为这个问题找到了一个很棒的解决方法:基本上在开始时将 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
}