【已解决】在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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容