只支持NSWindow的一小部分?

时间:2015-02-24 10:58:48

标签: objective-c cocoa

我必须在我的MAC OS应用程序中成功地解决问题,并且因为它不容易解释我会放置一个图像:custom window

我从图像中创建了NSWindow,但问题是如何创建结束的NSView(蓝色的),其目的是阻止用户的其他操作,只留下小部分活动。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以创建自定义NSView并为已放置的矩形区域绘制清晰的颜色,并为其余区域绘制禁用的颜色。捕获自定义视图的mouseDown事件,并丢弃启用区域外的所有鼠标事件,如果鼠标按下启用区域,则将鼠标按下事件调用到启用区域后面的控件。

答案 1 :(得分:0)

最好是张贴一个带有对话框的工作表来询问用户所需的信息(并阻止与窗口其余部分的交互),而不是模仿非常不像Mac的UI?

例如,在创建新项目或在Xcode中向项目添加文件时考虑UI。

如果你真的必须尝试这个,不要使用视图覆盖窗口。使用另一个窗口。让它无边界。将其backgroundColor设置为[NSColor clearColor],将其opaque设置为NO。将其hasShadow属性设置为NO。设置其框架以匹配要阻止的窗口的内容矩形(或者如果您需要阻止与其标题栏交互,则可以设置其框架)。

使用-addChildWindow:ordered:将您的叠加层窗口作为孩子附加到主窗口。

对于覆盖窗口的contentView,创建一个视图,除了要保持可访问的控件之外,将在任何地方绘制半透明颜色。要在主窗口的坐标系中获取该矩形,您可以使用类似[specialView convertRect:specialView.bounds toView:nil]的内容。