NSPopover 和雪豹

Posted

技术标签:

【中文标题】NSPopover 和雪豹【英文标题】:NSPopover and Snow Leopard 【发布时间】:2012-04-12 21:00:26 【问题描述】:

我在我的 Mac 应用中实现了 NSPopover。它在 10.7 Lion 中运行良好,但在 10.6 Snow Leopard 中启动时崩溃。我知道对 NSPopover 的支持是在 Lion 中引入的,但在 10.6 中不受支持,但我想知道如何使我的应用程序与旧的“雪豹”兼容。

我对 Mac 开发还很陌生,但这里是代码。有小费吗? (弹出框位于 MainWindow.xib 中)

.h

NSPopover *popOver;
@property (assign) IBOutlet NSPopover *popOver;
- (IBAction)showPopover:(id)sender;

.m

- (IBAction)showPopover:(id)sender
    

if (popOver.isShown) 

    [self.popOver close];


[[self popOver] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxYEdge];    

【问题讨论】:

当应用在 Snow Leopard 上运行时,您必须使用 NSPopover 以外的其他东西,例如 NSMenu,或者创建自己的 popover 类。 谢谢。我决定将 NSDrawer 用于以前的操作系统。知道如何确定用户运行的是 10.6 还是 10.7? 只检查 NSPopover 类的存在。 太有趣了!我使用 Mac OS 好几年了,但是最新的操作系统之间的不兼容真是太棒了!现在,当 MS Windows 用户在几乎任何版本中运行他们的应用程序时,我能告诉他们什么?! 【参考方案1】:

在您的程序中使用 MAAttachwindow 并尝试

【讨论】:

【参考方案2】:

检查 MAC 操作系统版本 (link),如果是 10.6,则使用 NSDrawer,否则使用 NSPopover。

【讨论】:

以上是关于NSPopover 和雪豹的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:popover.show 后重新初始化

检查菜单栏应用程序上的按键

一侧的 NSPopover 填充内容

如何以编程方式关闭 NSPopover

弹出框在状态栏中时的 NSPopover 瞬态

SwiftUI 使用键盘快捷键调用 NSPopover