在我的程序中,我进行了以下设置:

我在接口构建器中制作了3个NSView

所以PaintView是PlayerView的子视图,而ImageView是PlayerView之上的视图。

程序启动时,ImageView被隐藏。 PaintView是透明的,因此我可以看到它下面的PlayerView,但是在PaintView上会发生单击。到目前为止,一切都很好。

现在,我要完成的事情是,当我按下按钮时,PlayerView变为隐藏,ImageView变为可见,PaintView成为其子视图。这样我就可以看到ImageView穿过透明的PaintView,但是仍然可以单击PaintView。

到目前为止,我的方法是这样的:

// on the app start

[ImageView setHidden: YES];

// on the button press
[PaintView removeFromSuperview];
[PlayerView setHidden:YES];
[ImageView setHidden:NO];
[ImageView addSubview:PaintView positioned:NSWindowAbove relativeTo:nil];


不幸的是,这不能给我想要的结果。 ImageView位于最顶部,因此我无法单击PaintView。

有人知道我在做什么错吗?任何帮助都非常感谢!

谢谢!

最佳答案

removeFromSuperview会释放该对象及其包含的所有内容。在尝试将PaintView添加到另一个视图时,检查它是否为零。

关于objective-c - 将NSView添加为 subview 后,它没有显示(Cocoa/OSX),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16204513/

10-10 20:45