我必须在我的MAC OS应用程序中成功地解决问题,并且因为它不容易解释我会放置一个图像:custom window
我从图像中创建了NSWindow
,但问题是如何创建结束的NSView
(蓝色的),其目的是阻止用户的其他操作,只留下小部分活动。有什么建议吗?
答案 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]
的内容。