1

我在 Swift 项目(没有情节提要)上的主窗口中使用 NSBorderlessWindowMask,当我加载子视图时,NSTextfield 插座不可键盘编辑。我已经把这段代码放在了初始化上:

self.window?.makeKeyWindow()
self.window?.becomeKeyWindow()

这允许插座像焦点一样为“蓝色”,但键盘编辑被禁用,我可以在文本字段上复制/粘贴

4

2 回答 2

2

您需要使用自定义子类NSWindow和覆盖canBecomeKeyWindow()来返回 true。默认情况下,它为没有标题栏的窗口返回 false(如文档所述)。

您可能希望对canBecomeMainWindow().

此外,永远不要打电话becomeKeyWindow()(除了打电话super覆盖)。Cocoa 调用它来通知窗口它已成为关键窗口。它不指示窗口成为关键窗口。

于 2015-03-05T17:11:24.363 回答
0

我为这个问题找到了一个很棒的解决方法:基本上在开始时将 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
    }
于 2015-03-10T11:14:21.663 回答