我想在Cocoa中构建一个简单的表单设计器,需要使用鼠标在表单上移动控件(单击,按住,移动,释放)。
我是否需要从所有控件类继承新类来拦截这些事件?有没有办法一般地为任何控制实现它?
答案 0 :(得分:0)
一种方法可能是使用一个大的自定义视图来填充控件所在的所有空间。实现必要的方法在此视图中实现鼠标事件,对控件视图执行命中检测并移动它们。这种方法只需要NSView的一个自定义子类,您可以使用任何想要移动的视图或控件而无需对它们进行子类化。
答案 1 :(得分:0)
编写自定义视图以包含控件。覆盖-hitTest:
以忽略控件并返回self
。然后,当您收到鼠标事件时,找出它们适用的控件并适当移动。