NSView: перетащите подпредставление из суперпредставления в другой NSView - PullRequest
2 голосов
/ 25 октября 2011

У меня есть приложение, которое выкладывает страницы для журнала.Приложение размещает страницы (NSViews класса с именем Page) журнала в NSView с именем MasterPage (который сам по себе является contentView для NSScrollView).Подумайте о сетке страниц в виде прокрутки.

Затем на «страницах» автоматически размещаются подпредставления, представляющие рекламу (класс = реклама).Я хочу иметь возможность перетаскивать эти объявления в их суперпредставление (NSView класса Page) и между подпредставлениями MasterPage (другие представления класса Page).

Я могу перетащить класс объявления NSView на класс страницы, на который он был первоначально помещен, с помощью метода mouseDragged, но как я могу "освободить" подпредставление класса объявления из суперпредставления и перетащить его в другой NSView?

Надеюсь, это имело смысл.

1 Ответ

0 голосов
/ 25 октября 2011

Когда вы начинаете событие перетаскивания, удалите перетаскивающий вид из его суперпредставления и добавьте его к contentView из NSWindow. Затем вы можете перетащить его по всему окну. Когда событие перетаскивания завершится, используйте hitTest:, чтобы определить, над каким видом вы находитесь (возможно, вам придется вернуться к иерархии суперпредставлений, чтобы найти представление, которое вам действительно нужно). Затем добавьте вид перетаскивания обратно к конечной цели.

В зависимости от того, как вы реализовали обрезку в своих представлениях, вы можете пропустить шаг перемещения перетаскиваемого вида на contentView. Если вы не обрезаете свои просмотры страниц, тогда перетаскивающий вид может перемещаться по всему экрану.

...