【问题标题】:continue tracking mouse-drag event even after cursor moves out of the movie即使光标移出影片后仍继续跟踪鼠标拖动事件
【发布时间】:2010-10-20 03:07:45
【问题描述】:

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

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

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

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

有没有明显或复杂的方法来实现这个.....

提前致谢

拉杰什

【问题讨论】:

标签: cocoa


【解决方案1】:

我想提出一个不涉及在 while 循环中拦截事件的已接受答案的替代方案。

处理鼠标拖动事件:

- (void)mouseDragged:(NSEvent *)theEvent
{
}

如果您在 NSView 内开始拖动,这将触发,如果您将鼠标拖到外部,它将继续触发。

【讨论】:

    【解决方案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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2022-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 2011-07-24
      相关资源
      最近更新 更多