2010-06-10 110 views
5

我正在編寫一個應用程序,它必須知道何時調整窗口大小或移動窗口。 我已經看過通知,但它似乎沒有做我所期望的。Mac OS X窗口調整大小或移動時檢測

你有什麼想法我可以做到這一點?

回答

4

給你的窗口一個代表。 NSWindowDelegate protocolwindowWillResize:toSize:windowWillMove:方法。

+1

是否所有窗口工作?我的意思不僅是應用程序中的一個? – 2010-06-10 19:28:33

2

鑑於您對卡爾答案的回覆,我建議您使用Accessibility API,它可以爲您提供所有窗口的訪問權限(而且我相信幀更改通知),而不僅僅是您的應用。

+0

這是一個不錯的主意,當事情完成時提示通知,而不是在移動或調整大小時提示:( – 2010-06-11 05:23:06

+0

不幸的是,您可以爲其他應用程序的窗口做最好的事情 – 2010-06-11 11:18:29

1

如果你想要窗口大小/順序,那麼看看CGWindow.h。 CGWindowListCreateDescriptionFromArray()可能是你想要的。

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

-1

在斯威夫特我的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 
} 
+0

AppDelegate類中沒有窗口屬性。 – Lubos 2016-01-10 15:04:07