有没有办法使NSButton可拖动?我的意思是在最终构建的应用程序中,用户可以拖动NSButton。
我正在尝试做一些几乎“仪表板”式的东西......就像可拖动的东西一样。目前,我只是使用保留在原位的NSButton,但如果它们可以被拖拽则会很好。
答案 0 :(得分:5)
NSButton通常会吃掉所有鼠标事件。因此,您必须子类化NSButton,并且不仅要覆盖拖动处理,还要覆盖单击处理:
- (void)mouseDown:(NSEvent *)theEvent
{
[self highlight:YES];
}
- (void)mouseDragged:(NSEvent *)event
{
// start a dragging session
}
- (void)mouseUp:(NSEvent *)theEvent
{
[self performClick:self];
}
答案 1 :(得分:3)
我从标准Drag-and-drop infrastructure开始。即使你可能没有使用所有的功能,它通常是一个很好的起点,并为你处理很多棘手的案例。
答案 2 :(得分:1)
添加深度:
您需要继承NSButton并覆盖:
-(void)mouseDragged:(NSEvent *)theEvent{
//With:
NSRect gframe = self.frame;
gframe.origin.x = theEvent.locationInWindow.x;
[self setFrame:gframe];
}
答案 3 :(得分:0)
在UIControl类,UITouch和事件处理指南中查看“continueTrackingWithTouch:withEvent:”。基本思路是为TouchDragInside事件创建一个处理程序,使用事件中的位置数据来更新按钮的中心。
如果你在iOS上工作,这将是一个非常方便的建议,你不是。
快速浏览一下NSControl和NSView中的一些内容,我确信它可以完成,我只是没有快速回答,而且我的时间很短。 :(
基本上,我们的想法是捕捉mouseDown事件,并开始关注鼠标位置,按每次检查时鼠标移动的相对相对数量更新按钮的位置。
如果需要,可以稍晚。