是否可以遍历 OSX 中任何应用程序的所有打开窗口并在 Swift 中监听它们的调整大小事件?我想创建自定义窗口管理器,它会根据用户行为移动和调整事件大小——因此如果用户调整窗口大小,其他窗口会自动重新排列。
我是 Haskell,不是 Swift 开发人员,所以如果有任何代码片段/示例展示如何实现此效果,我将不胜感激。 (实际上,我会将其用作一种 Haskell -> Cocoa 绑定(bind)。)
编辑: 我也有兴趣在 Objective-C 中查看解决方案,但 Swift 在这里对我来说更重要。
最佳答案
是否可以遍历 OSX 中任何应用程序的所有打开窗口并在 Swift 中监听它们的调整大小事件?
可以这样做,更好的方法是让您的自定义窗口管理器类实现 NSWindowDelegate协议(protocol)并设置所有窗口的delegate到您的自定义窗口管理器。这将为您提供所需的所有调整大小和移动信息。
我是 Haskell,不是 Swift 开发人员,所以如果有任何代码片段/示例展示如何实现这种效果,我将非常感激。
实现协议(protocol)方法:
class CustomWindowManager: NSWindowController, NSWindowDelegate {
// Resize Methods
func windowWillResize(sender: NSWindow,toSize frameSize: NSSize) -> NSSize {
// Your code goes here
}
func windowDidResize(notification: NSNotification) {
// Your code goes here
}
}
然后您可以选择要实现的协议(protocol)方法,因为协议(protocol)中的所有方法都是可选的。
您必须能够识别哪个窗口正在调用委托(delegate)方法,并跟踪由于对初始窗口更改使用react而您移动或调整大小的任何窗口。看这个Stack Overflow question寻求帮助。
要获取当前屏幕上所有窗口的列表,请参阅 Stack Overflow question .
编辑
要获取当前屏幕上您的应用程序 的所有窗口的列表,请参阅此 Stack Overflow question .
关于objective-c - 在 Swift/Objective-C 中监听窗口调整大小事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34169365/