我在父视图中的网格中对齐的视图很少(全部是NSView的)
我压倒一切 - (void)mouseDown:(NSEvent *)事件 - (void)mouseDragged:(NSEvent *)子视图子类中某些自定义绘图的事件
具体来说,我在子视图的鼠标拖动过程中绘制了一些矩形框。
问题:当光标移出子视图时(鼠标拖动过程中),显然,我无法跟踪事件,因此无法调整矩形的大小。 我想跟踪应用程序窗口之外的鼠标移动...(现在只是拖动事件)
有没有明显或复杂的方法来实现这一目标.....
先谢谢
拉杰什
答案 0 :(得分:2)
- (void)mouseDown:(NSEvent *)theEvent
{
NSPoint point;
while (1) {
theEvent = [[self window] nextEventMatchingMask: (NSLeftMouseDraggedMask | NSLeftMouseUpMask)];
point = [self convertPoint: [theEvent locationInWindow] fromView: nil];
// do something with point
if ([theEvent type] == NSLeftMouseUp)
break;
}
}
答案 1 :(得分:1)
我想提出一个替代已接受的答案,它不涉及在while循环中拦截事件。
处理鼠标拖动事件:
- (void)mouseDragged:(NSEvent *)theEvent
{
}
如果您在NSView内部开始拖动,则会触发,如果您将鼠标拖到外部,它将继续触发。