当前位置:  开发笔记 > IOS > 正文

在Swift/Objective-C中监听window resize事件

如何解决《在Swift/Objective-C中监听windowresize事件》经验,为你挑选了1个好方法。

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

我是Haskell,而不是Swift开发人员,因此我非常重视任何代码片段/示例,展示如何实现此效果.(事实上​​我将它用作一种Haskell - > Cocoa绑定.)

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



1> Pete Hornsby..:

是否可以迭代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问题.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有