是否可以迭代OSX中任何应用程序的所有打开窗口并在Swift中监听它们的resize事件?我想创建自定义窗口管理器,根据用户行为移动和调整事件大小 - 因此,如果用户调整窗口大小,其他窗口将自动重新排列.
我是Haskell,而不是Swift开发人员,因此我非常重视任何代码片段/示例,展示如何实现此效果.(事实上我将它用作一种Haskell - > Cocoa绑定.)
编辑: 我也非常有兴趣在Objective-C中找到解决方案,但Swift对我来说更重要.
是否可以迭代OSX中任何应用程序的所有打开窗口并在Swift中监听它们的resize事件?
可以这样做,更好的方法是让自定义窗口管理器类实现NSWindowDelegate协议并将所有窗口的委托设置为自定义窗口管理器.这将为您提供所需的所有调整大小和移动信息.
我是Haskell,而不是Swift开发人员,因此我非常重视任何代码片段/示例,展示如何实现此效果.
实施协议方法:
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问题.
要获取当前屏幕上所有窗口的列表,请参阅此Stack Overflow问题.
要获取当前屏幕上所有应用程序窗口的列表,请参阅此Stack Overflow问题.