1

NSWindowDelegateプロトコルにはwindowDidDeminiaturizeコールバックがありますが、コールバックはありませんwindowWillDeminiaturize。ユーザーが変更が適用されたことを確認する前に、ウィンドウが小型化し始めた瞬間を捉えて変更を加える必要があります。

windowDidMiniaturize別のウィンドウを表示する必要があるため、変更を行うことができません。で行うとwindowDidMiniaturize、最初のウィンドウが縮小されるとすぐに、この別のウィンドウが表示されます。

何か案は?

4

1 に答える 1

1

編集:この回答をここに残しますが、完全に確実に機能しません。以下のコメントを参照してください。

NSWindow をサブクラス化し、オーバーライドすることができますdeminiaturize:

@interface MyWindow : NSWindow
@end

@implementation MyWindow

- (void) deminiaturize:(id)sender
{
    NSLog( @"window about to deminiaturize!" );
    [super deminiaturize:sender];
}
@end

おそらく、これが発生したときに、ウィンドウではなくウィンドウ デリゲートに何らかのアクションを実行してもらいたいので、次のようにすることができます。

- (void) deminiaturize:(id)sender
{
    id<NSWindowDelegate> delegate = [self delegate];
    if( [delegate respondsToSelector:@selector(windowWillDeminiaturize)] ) {
        [delegate performSelector:@selector(windowWillDeminiaturize)];
    }

    [super deminiaturize:sender];
}
于 2012-06-22T01:34:54.347 に答える