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 回答