【已解决】在Mac OS X中点击按钮弹出新窗口怎么弄?

问题

大概就是点击按钮后从现在的窗口上方向下弹出一个窗口,用来选择一下东西。最好能给个demo,谢谢了 。(问题来自:http://www.cocoachina.com/bbs/read.php?tid=1679520])

解决方案1:完全自由窗口

这种形式下,新打开的子窗口与父窗口相互独立,即使关闭父窗口子窗口也不会受到任何影响。

testWindowController * twc = [[testWindowController alloc] initWithWindowNibName:@"testWindowController"];
[twc showWindow:nil];

解决方案2:Modal Windows

子窗口被弹出时,父窗口会无法接收鼠标、键盘事件的响应。
实现代码如下:

[[NSApplication sharedApplication] runModalForWindow:twc.window];

解决方案3:Modal sessions

子窗口被弹出时,只有父窗口的菜单栏、快捷键等可以接收鼠标、键盘事件的响应。
实现代码如下:

sessionCode = [[NSApplication sharedApplication] beginModalSessionForWindow:twc.window];

附加说明

在所有的Modal形式下(Modal Windows和Modal Sessions),都需要在父窗口载入后监听windowWillClose方法,其代码如下:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(windowWillClose:)
                                                 name:NSWindowWillCloseNotification
                                               object:nil];

并且在windowWillClose方法中停止Modal:

- (void)windowWillClose:(NSNotification *)notification {
    
    [[NSApplication sharedApplication] stopModal];
    
    if (sessionCode != 0) {
        //窗口以Modal sessions启动时,停止session
        [[NSApplication sharedApplication]endModalSession:sessionCode];
    }
}

Demo运行图与下载地址

player2.gif

https://github.com/gaoxiaodiao/mac_sample/tree/master/windowSample

参考链接

https://blog.csdn.net/lovechris00/article/details/77922445

你可能感兴趣的:(【已解决】在Mac OS X中点击按钮弹出新窗口怎么弄?)