Перемещение элементов управления с помощью мыши в Cocoa

Я хочу создать простой конструктор форм в Cocoa, и мне нужно перемещать элементы управления в форме с помощью мыши (щелкать, удерживать, перемещать, отпускать).

Нужно ли мне наследовать новые классы от всех классов управления, чтобы перехватывать эти события? Есть ли способ реализовать его в целом для любого элемента управления?


person Antonio Linares Cañas    schedule 15.05.2012    source источник


Ответы (2)


Одним из способов может быть одно большое пользовательское представление, которое заполняет все пространство, в котором будут находиться элементы управления. Реализуйте необходимые методы для реализации событий мыши в этом представлении, выполняя обнаружение попаданий в представлениях элементов управления и перемещая их. Для этого подхода требуется только 1 пользовательский подкласс NSView, и вы можете использовать любые представления или элементы управления, которые хотите перемещать, не создавая их подклассов.

person monoxygen    schedule 16.05.2012

Напишите собственное представление, содержащее элементы управления. Переопределите -hitTest:, чтобы игнорировать элементы управления и вместо этого вернуть self. Затем, когда вы получаете события мыши, выясните, к какому элементу управления они применяются, и перемещайте их соответствующим образом.

person Mike Abdullah    schedule 16.05.2012