如何在现有窗口中以模态方式显示自定义视图?

时间:2018-06-11 16:50:13

标签: macos cocoa appkit

我正在尝试使用主窗口构建一个UI,该主窗口显示一些内容,有时会在窗口右边缘的模态视图中滑动。当模态打开时,必须阻止与主要内容的交互;但是,单击主要内容应该关闭模式。这是一个模型:

UI with modal not shown

UI with modal shown

请注意,用户只能看到一个窗口。也就是说,模态应该嵌套在主窗口中。

我对AppKit和Cocoa的总体经验很少。到目前为止,我的方法是构建我的UI:

Root region (NSView)
    -> MainRegion (NSView)
    -> ModalRegion (NSView; toggle hidden and animate the left edge)

然后将子视图添加到MainRegion和ModalRegion以显示内容。问题是ModalRegion不会吸收输入事件。

建立这种UI的AppKit方法是什么?我主要只需要了解视图层次结构应该如何形成以及如何阻止/吸收输入事件。我想我自己可以搞清楚动画。此外,该应用程序的目标是macOS 10.8+,但更新版本的答案也会有所帮助。

1 个答案:

答案 0 :(得分:0)

它不是像UI那样的macOS,但你可以使用两种方法。在这两种情况下,您都可以使用透明视图覆盖主窗口,并在鼠标单击时关闭模态视图。如果您需要与主窗口重叠的阴影(如模型中所示),则需要使用附加到主窗口的窗口作为子窗口。如果不是这种情况,那么使用附加到主窗口的contentView的视图就足够了。

一切顺利。