5

カスタムの[キャンセル]ボタンまたはシステムの赤いウィンドウボタンを使用してキャンセルできるダイアログウィンドウがあります。ダイアログがキャンセルされたときに、いくつかの簡単なロジックを実行する必要があります。ユーザーが赤いボタンを押したことを検出するにはどうすればよいですか?

-windowWillClose:デリゲートコールバックを使用して、閉じているウィンドウを検出できることはわかっています。ただし、このコールバックは、ダイアログが成功した後にプログラムでウィンドウを閉じるときにも呼び出されます。BOOLフラグを設定するだけでもよいことも知っていますが、もっと良い解決策はありますか?赤いボタンのアクティブ化を検出できれば最高です。

4

1 に答える 1

14

閉じるボタンを定義します。

NSButton *closeButton = [self standardWindowButton:NSWindowCloseButton];

閉じるボタンをカスタムセレクターに接続します。

[closeButton setTarget:self.delegate];
[closeButton setAction:@selector(closeThisWindow)]; 

特定のコードを実行し、ウィンドウを手動で閉じます。

-(void)closeThisWindow {

    //
    // The NSWindowCloseButton has been clicked.
    // Code to be run before the window closes.
    //

    [self close]; 
}
于 2012-06-30T14:16:41.060 に答える