概要
MacとMIDI機器を接続する時に開くウィンドウ↓ をプログラムのコードから呼び出したかった。
方法
CoreAudioKit
のCABTLEMIDIWindowController
を使えば良いようです。
func open() {
// すでに開いていた場合は新規にはインスタンスを作らないように注意
if let window = NSApp.windows.first(where: { $0.title.contains("Bluetooth") }) {
window.orderFrontRegardless()
return
}
NSApp.activate(ignoringOtherApps: true)
let wc = CABTLEMIDIWindowController()
wc.window?.hidesOnDeactivate = false // ここが重要ポイント
wc.showWindow(nil)
}
注意点として,hidesOnDeactivate = false
をしないとスクリーン上からはウィンドウが消えているのに、windowのインスタンスが残っておりクラッシュするということがあり得ます。また、CABTLEMIDIWindowController()をどこかで保持するのはやめた方が良さそうです。MIDI機器との接続が意図せず切れた時に、AppDelegateにてThread 1: EXC_BAD_ACCESS
で原因不明死することがあったりします。