NSView:将子视图从superview拖到另一个NSView

时间:2011-10-25 16:40:34

标签: cocoa drag nsview subview superview

我有一个应用程序,可以为杂志编制页面。该应用程序在名为MasterPage的NSView(它本身是NSScrollView的contentView)上列出杂志的页面(名为Page的类的NSView)。想一想滚动视图中的网格网格。

然后,“页面”会自动放置代表广告的子视图(class = Ad)。我希望能够在他们的超级视图(Page类的NSView)和MasterPage的子视图(其他Page类视图)之间拖动这些广告。

我可以通过调用mouseDragged方法在最初放置的Page类NSView上拖动Ad类NSView但是如何从superview“释放”Ad class子视图并将其拖到另一个NSView?

希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

当您开始拖动事件时,请从其超级视图中删除拖动视图,然后将其添加到contentView的{​​{1}}。然后,您可以将其拖动到整个窗口。当拖动事件完成时,使用NSWindow来确定您所在的视图(您可能需要返回超级视图层次结构以查找您真正想要的视图)。然后将拖动视图添加回最终目标。

根据您在视图中实现裁剪的方式,您可以跳过将拖动视图移动到hitTest:的步骤。如果你没有剪辑你的页面视图,那么拖动视图可以在整个屏幕上移动。