1時間くらいハマった上に,日本語情報としてはまだないようなので,メモを残します.
NSWindow は,以下のようにスタイルを設定することで borderless,すなわち,タイトルバー等を除去することができます.
let window = NSWindow()
window.styleMask = [.borderless]
しかし,borderless な NSWindow に対しては,デフォルトでキー操作が無効になってしまうようです.すなわち,そのような NSWindow
上に NSTextField
等の入力可能な要素を配置しても,キー入力を受け付けないために,編集できません.
By default, borderless windows cannot become key.
objective c - NSTextField not editable in custom NSWindow - Stack Overflow
公式にも記述がありました.
The value of this property is true if the window has a title bar or a resize bar, or false otherwise.
canBecomeKey - NSWindow | Apple Developer Documentation
これを解決するためには,NSWindow クラスを継承したクラス内で,canBecomeKey
プロパティを true
に設定する必要があります.先ほどの参照先は Objective-C のコードですが,Swift では以下のように記述できます.
class PPWindow: NSWindow { override var canBecomeKeyWindow: Bool { return true } }
以上です.