問題
カスタムウィンドウを作る時NSBorderlessWindowMask
を指定すると、デフォルトのウィンドウを閉じる機能が無効化されてしまい、メニューから閉じたり、cmd+w
で閉じたりすることができなくなる。
解決法
カスタムウィンドウクラスでvalidateMenuItem
をオーバーライドしてperformClose
を有効化させ、performClose
をオーバーライドして閉じる処理を記述する。
class MyWindow: NSWindow {
...
override func performClose(sender: AnyObject?) {
// 処理
...
self.close()
}
override func validateMenuItem(menuItem: NSMenuItem) -> Bool {
return menuItem.action == #selector(performClose(_:)) ? true : super.validateMenuItem(menuItem)
}
...
参考