在Swift / Objective-C中收听窗口大小调整事件

是否可以遍历OSX中任何应用程序的所有打开的窗口,并在 Swift中收听他们调整大小的事件?我想创建自定义窗口管理器,根据用户行为移动和调整事件大小 – 因此,如果用户调整窗口大小,其他窗口将自动重新排列.

我是Haskell,而不是一个Swift开发人员,所以我会非常感谢任何代码片段/示例显示如何实现这一效果. (其实我会用它作为一种Haskell – > Cocoa绑定.)

编辑:
我也很有兴趣在Objective-C中找到解决方案,但是Swift对我来说更重要.

是否可以遍历OSX中任何应用程序的所有打开的窗口,并在Swift中收听他们调整大小的事件?

有可能这样做,更好的方法是让您的自定义窗口管理器类实现NSWindowDelegate协议,并将所有窗口的delegate设置为您的自定义窗口管理器.这将给你所有的调整大小和移动你需要的信息.

我是Haskell,所以我会非常感谢任何代码片段/示例显示如何实现这一效果.

实施协议方式:

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
       }
}

然后,您可以选择要实现的协议方法,因为协议中的所有方法都是可选的.

您必须能够识别哪个窗口正在调用委托方法,并跟踪由于对初始窗口更改的响应而移动或调整大小的任何窗口.看到这个Stack Overflow question的帮助.

要获得当前屏幕上所有窗口的列表,请参阅此Stack Overflow question.

编辑

获取目前在屏幕上的应用程序的所有窗口的列表,请参阅此Stack Overflow question.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...