ポップアップとしてモーダルにロードされた NSWindow を、その外側をクリックして閉じるにはどうすればよいですか?
カーソルがフォーカスのあるモーダルウィンドウの外にあるとき(ただし、アプリ内にあるとき)、マウスイベントを処理したいと思います。
ポップアップとしてモーダルにロードされた NSWindow を、その外側をクリックして閉じるにはどうすればよいですか?
カーソルがフォーカスのあるモーダルウィンドウの外にあるとき(ただし、アプリ内にあるとき)、マウスイベントを処理したいと思います。
次のデリゲート メソッドを実装してNSWindow
、ウィンドウがフォーカスを失ったという通知を受け取ることができます。
- (void)windowDidResignKey:(NSNotification *)notification
そして、あなたのアプリケーションが最前面のアプリであるかどうかを確認してください。はいの場合は、それに応じて閉じます。
アプリケーションがモーダル実行ループにある間、ウィンドウに関連付けられていない限り、他のイベント (マウス、キーボード、またはウィンドウを閉じるイベントを含む) には応答しません。また、モーダル実行ループに関連付けられていないタスク (タイマーの起動など) も実行しません。
メソッドを使用できnextEventMatchingMask:untilDate:inMode:dequeue:
ます。これはモーダルループで機能します。
NSWindow と NSApplication はどちらも nextEventMatchingMask:untilDate:inMode:dequeue: メソッドを定義します。これにより、オブジェクトはイベント キューから特定のタイプのイベントを取得できます。