2010-06-10 109 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