如何阻止鼠标拖动事件移动整个窗口? [可可]

问题描述:

我认为这应该是一个非常容易的,但我无法找到文档的答案。如何阻止鼠标拖动事件移动整个窗口? [可可]

我想停止鼠标拖动在我的自定义nsview子类中(或开始)导致窗口被拖动到屏幕上的事件。我怎么能告诉窗口保持静止,以便我可以与视图进行交互,而不是拖动整个窗口?谢谢。

除了您是否处理mouseDragged的问题外,您可能需要覆盖mouseDownCanMoveWindow以返回NO,或覆盖isOpaque以返回YES。

+0

谢谢,mouseDownCanMoveWindow/isOpaque正是我一直在寻找的,不确定我在文档中错过了它 – aks 2010-07-17 23:32:07

您需要在您的视图中执行mouseDragged:As documented,NSView的实现只是将消息传递给下一个响应者,这意味着它最终会碰到窗口。 (为什么?请参阅“The Responder Chain” in the Cocoa Event-Handling Guide。)只要您不调用超类实现,自己就可以防止该消息的响应。

+0

我做的是实现mouseDragged,JWWalkers的答案是诀窍。谢谢 – aks 2010-07-17 23:32:58