NSWindowDelegate
协议有windowDidDeminiaturize
回调,但没有windowWillDeminiaturize
回调。在用户看到应用的更改之前,我需要捕捉窗口开始小型化并对其进行更改的时刻。
我无法进行更改,windowDidMiniaturize
因为我需要显示另一个窗口;如果我在 中执行windowDidMiniaturize
此操作,那么一旦第一个窗口小型化,就会出现另一个窗口。
有任何想法吗?
NSWindowDelegate
协议有windowDidDeminiaturize
回调,但没有windowWillDeminiaturize
回调。在用户看到应用的更改之前,我需要捕捉窗口开始小型化并对其进行更改的时刻。
我无法进行更改,windowDidMiniaturize
因为我需要显示另一个窗口;如果我在 中执行windowDidMiniaturize
此操作,那么一旦第一个窗口小型化,就会出现另一个窗口。
有任何想法吗?
编辑:我在这里留下这个答案,但它完全不能可靠地工作,请参阅下面的评论。
您可以继承 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];
}