迫使NSWindow像NSAlert一样保持活跃

时间:2013-09-26 03:17:22

标签: cocoa nswindow nsnotificationcenter nsnotifications nsnotification

我希望在辅助窗口中有一个进度条,它像NSAlert窗口一样保持活动状态。我特别喜欢当用户试图点击它时它是如何播放声音的。

我想出了如何通过调用强制窗口保持活动状态:

[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(windowChange:)
                                             name: NSWindowDidBecomeKeyNotification
                                           object: nil];

然后在通知方法中我做:

-(void) windowChange:(NSNotification*) notification {
    NSWindow *window = [notification object];
    if (window == myMainWindow) {
        [myProgressWindow makeKeyAndOrderFront:nil];
    }
}

这并不是我想做的一切。大多数情况下,我想阻止用户按下主窗口上的任何内容并保持我的进度条窗口处于活动状态/前面。

-GW

1 个答案:

答案 0 :(得分:0)

试试这个:

  -(void) windowChange:(NSNotification*) notification 

    {

        NSWindow *window = [notification object];

        if (window == myMainWindow) {

            [myProgressWindow makeKeyAndOrderFront:nil];

            for (NSView *item in [self.myMainWindow.contentView subviews])
            {
                if ([item isKindOfClass:[NSTextField class]] || [item isKindOfClass:[NSButton class]])
                {
                    [(id)item setEnabled:NO];
                }
            }

        }

    }