【问题标题】:How to receive notifications when moving Window by mouse?鼠标移动窗口时如何接收通知?
【发布时间】:2023-03-30 10:40:01
【问题描述】:

我尝试了-setFrame:display: 和-windowDidMove:,但它们在移动窗口时没有发送。

【问题讨论】:

    标签: cocoa notifications nswindow


    【解决方案1】:

    如果您想跟踪NSWindow 实时移动,默认情况下是不可能的,您必须自己完成。当NSWindow 开始用NSWindowWillMoveNotification 拖动(移动)或结束拖动(移动)-NSWindowDidMoveNotification 时,可能会收到通知。

    看看这些例子,它们可以帮助您解决实时窗口移动问题:

    1.示例:

    描述: NSWindow 上非常短的类别,可以让 Windows 发布 NSWindowDidMove 在拖动过程中不断通知(很像 NSWindowDidResizeNotification 行为)。使用辅助线程和 行为可以切换。

    Download link.

    2。示例:

    Project download link.

    【讨论】:

    • 这种方式很消耗CPU,我之前查过。我使用 mouseDown: 和 mouseDragged: 消息。
    • @user486134 这也是我的想法。我很高兴你解决了这个问题。感谢您分享您的解决方案,也许这对某人有用。
    • @user486134 你如何使用 mouseEvents 来实现它?
    • @user486134 一个警告:mouseDragged 并不一定意味着 NSWindow 正在被移动。取决于窗口内的 NSView。
    【解决方案2】:

    您可以为NSWindowDidMoveNotification注册一个观察者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多