检测Mac OS X窗口调整大小或移动的时间

时间:2010-06-10 19:11:56

标签: objective-c macos cocoa

我正在编写一个应用程序,必须知道何时调整窗口大小或移动窗口。 我查看了通知,但似乎没有按照我的预期进行。

你知道我怎么能做到这一点吗?

5 个答案:

答案 0 :(得分:4)

为您的窗口提供委托。 NSWindowDelegate protocolwindowWillResize:toSize:windowWillMove:种方法。

答案 1 :(得分:2)

鉴于您对Carl的答案的回应,我建议使用Accessibility API,这可以让您访问所有窗口(而不仅仅是您的应用程序)的访问权限(我相信框架更改通知)。

答案 2 :(得分:1)

如果您想要窗口大小/排序,请查看CGWindow.h。 CGWindowListCreateDescriptionFromArray()可能就是你想要的。

NSWindowList()对于窗口列表也很有用。

答案 3 :(得分:0)

如果您需要管理 MacOS Windows,请尝试使用辅助功能。

AX 非常棘手(低级/异步),但这两个 github 有很大帮助。

https://github.com/tmandry/Swindler

用途

https://github.com/tmandry/AXSwift

它们为窗口创建和移动等提供回调。

从骗子开始

答案 4 :(得分:-1)

在Swift中,我的AppDelegate看起来像这样:

func applicationDidFinishLaunching(notification: NSNotification) {
    // Set NSWindowDelegate to respond to windowWillResize
    window.delegate = self
}

func windowWillResize(sender: NSWindow, toSize frameSize: NSSize) -> NSSize {
    println(frameSize)
    return frameSize
}