Objective c 获取mouseDragged事件的开始和结束坐标

Objective c 获取mouseDragged事件的开始和结束坐标,objective-c,Objective C,我正在制作一个应用程序来跟踪哪些键被按下,用户在屏幕上单击的位置,以及他们何时何地拖动鼠标。我已经实现了前两个,但我不确定如何继续获得单次鼠标拖动的开始和结束坐标 这就是我到目前为止所做的: dragWatcher = [NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent *event) { NSLog(@"----------------------\n");

我正在制作一个应用程序来跟踪哪些键被按下,用户在屏幕上单击的位置,以及他们何时何地拖动鼠标。我已经实现了前两个,但我不确定如何继续获得单次鼠标拖动的开始和结束坐标

这就是我到目前为止所做的:

dragWatcher = [NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent *event) {
      NSLog(@"----------------------\n");
      NSLog(@"dX: %.2lf dY:%.2lf", [event deltaX], [event deltaY]);
      NSLog(@"----------------------\n");
}];
为什么当我拖动一个窗口(不停止)时,会有多条日志行?我本以为只要我不释放鼠标按钮,它就应该算作相同的动作。蒂亚

编辑:NSLog的示例

2014-05-08 16:12:11.821 Recorder[17504:303] dX: 1.00 dY:0.00
2014-05-08 16:12:11.822 Recorder[17504:303] ----------------------
2014-05-08 16:12:11.838 Recorder[17504:303] ----------------------
2014-05-08 16:12:11.838 Recorder[17504:303] dX: 6.00 dY:-4.00
2014-05-08 16:12:11.838 Recorder[17504:303] ----------------------
2014-05-08 16:12:11.854 Recorder[17504:303] ----------------------
2014-05-08 16:12:11.854 Recorder[17504:303] dX: 3.00 dY:-4.00
2014-05-08 16:12:11.854 Recorder[17504:303] ----------------------
2014-05-08 16:12:11.871 Recorder[17504:303] ----------------------
2014-05-08 16:12:11.871 Recorder[17504:303] dX: 21.00 dY:-15.00
2014-05-08 16:12:11.871 Recorder[17504:303] ----------------------

您误解了什么是
NSLeftMouseDragged
事件。它与
NSMouseMoved
事件完全类似,只是按下了鼠标左/主按钮。它并不表示从鼠标向下拖动到鼠标向上拖动的总次数


应用程序需要在拖动过程中不断更新鼠标位置,以便做出响应。例如,当您单击一个按钮时,它会在光标位于内部时高亮显示。如果将光标移出按钮,它将取消高亮显示。如果将其移回,它将再次高亮显示。根据您对
NSLeftMouseDragged
的解释,在松开按钮并结束拖动之前,应用程序不会收到其他事件。

您现在得到的NSLog是什么?为什么您认为只有一个拖动事件?拖动是一个连续的手势,因此每次鼠标移动时都会收到呼叫。当这些事件发生时,您可以使用NSLeftMouseDown和NSLeftMouseUp来获取调用。嗯,但是我如何区分拖动和单击?我认为您必须抓取成对的mouseDown和mouseUp并查看它们的位置属性,如果位置的差异超过某个阈值,则称之为拖动。你也可以从第一次呼叫mouseDragged得到初始位置。是的,我现在明白了。我想我会努力追求@rdelmar的建议。