我正在制作一个应用程序来跟踪用户在屏幕上按下的键和单击的位置,以及他们拖动鼠标的时间和位置。我已经实现了前两个,但我不确定如何继续获取单个鼠标拖动的开始和结束坐标。
这就是我到目前为止所知道的:
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] ----------------------发布于 2014-05-09 08:02:31
您误解了NSLeftMouseDragged事件是什么。除了按下鼠标左键/主鼠标键之外,它与NSMouseMoved事件完全相似。它不表示从按下鼠标到释放鼠标的整个拖动过程。
应用程序需要在拖动过程中不断更新鼠标位置,这样它们才能做出响应。例如,当您单击按钮时,它会在光标位于按钮内部时高亮显示。如果将光标移出按钮,它将取消高亮显示。如果将其移回,它将再次高亮显示。根据您对NSLeftMouseDragged的解释,在释放按钮并结束拖动之前,应用程序不会接收额外的事件。
https://stackoverflow.com/questions/23554168
复制相似问题