2

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

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

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

希望这是有道理的。

4

1 回答 1

0

当您开始拖动事件时,从其父视图中移除拖动视图,并将其添加contentViewNSWindow. 然后,您可以在整个窗口中拖动它。当拖动事件完成时,使用hitTest:来确定您在哪个视图之上(您可能必须返回超级视图层次结构才能找到您真正想要的视图)。然后将拖动视图添加回最终目标。

根据您在视图中实现剪辑的方式,您可以跳过将拖动视图移动到contentView. 如果您不剪辑页面视图,那么拖动视图可以在整个屏幕上移动。

于 2011-10-25T17:13:23.133 回答