NSWindowDelegate
协议有一个windowDidDeminiaturize
回调,但没有windowWillDeminiaturize
回调。我需要抓住窗口开始进行半空间化并在用户看到应用更改之前对其进行更改的时刻。
我无法在windowDidMiniaturize
中进行更改,因为我需要显示另一个窗口;如果我在windowDidMiniaturize
中执行此操作,则在第一个窗口小型化后,此另一个窗口将立即显示。
有什么想法吗?
答案 0 :(得分: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];
}