Преместете контролите с мишката в 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