即使光标移出电影后,也会继续跟踪鼠标拖动事件

时间:2009-04-17 14:53:10

标签: cocoa

我在父视图中的网格中对齐的视图很少(全部是NSView的)

我压倒一切 - (void)mouseDown:(NSEvent *)事件 - (void)mouseDragged:(NSEvent *)子视图子类中某些自定义绘图的事件

具体来说,我在子视图的鼠标拖动过程中绘制了一些矩形框。

问题:当光标移出子视图时(鼠标拖动过程中),显然,我无法跟踪事件,因此无法调整矩形的大小。 我想跟踪应用程序窗口之外的鼠标移动...(现在只是拖动事件)

有没有明显或复杂的方法来实现这一目标.....

先谢谢

拉​​杰什

2 个答案:

答案 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内部开始拖动,则会触发,如果您将鼠标拖到外部,它将继续触发。