弹出框在iPad应用程序中被广泛使用,我非常喜欢它们。现在我在考虑如何在Mac上的AppKit中实现它,因为我有一个使用案例。
我需要一个NSWindow子类来完成覆盖吗?还是我也可以使用普通视图?
弹出框在iPad应用程序中被广泛使用,我非常喜欢它们。现在我在考虑如何在Mac上的AppKit中实现它,因为我有一个使用案例。
我需要一个NSWindow子类来完成覆盖吗?还是我也可以使用普通视图?
以下是设置NSPopover的方法,非常简单,大部分可以在界面构建器中完成。
In your header file (.h) add the following two lines of code:
@property (assign) IBOutlet NSPopover *popover;
- (IBAction)showPopover:(id)sender;
Don't forget to connect both the outlet and the action to your interface.
showPopover
In the showPopover
method, add this line to show the popover:
[[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxYEdge];
由于复制/粘贴并不好玩,你需要自己想办法关闭弹出框。你可以手动关闭(提示:尝试使用close
),也可以更改behavior
属性让系统来关闭(请参见下面的编辑)。
祝你好运,希望这有所帮助!
编辑
另一种关闭弹出窗口的方法是将其行为设置为短暂的。这允许用户单击弹出窗口外部的任何位置使其消失
弹出窗口的行为属性设置了它的出现和消失方式,有三种行为:
NSPopoverBehaviorApplicationDefined
- (默认)您的应用程序必须自己关闭弹出窗口NSPopoverBehaviorTransient
- 当与弹出窗口外的任何界面元素进行交互时,弹出窗口将关闭NSPopoverBehaviorSemitransient
- 当与弹出窗口的呈现视图外的任何界面元素进行交互时,弹出窗口将关闭。在Apple的文档中了解更多信息。
如果我理解你的意思正确,你想要类似于MAAttachedWindow(由Matt Gemmell开发)的东西,它是开源的。
或者,您可以查看文档中的 Popover
示例。https://developer.apple.com/library/mac/samplecode/Popover/Introduction/Intro.html