我正在用自己的捕捉行为以及与标准窗口稍有不同的其他功能集来实现NSWindow。

当使用诸如BetterSnapTool之类的辅助软件时,将NSWindow拖动到边缘会触发BetterSnapTool的捕捉,从而干扰了NSWindow的捕捉。

如何防止其他应用程序(例如BetterSnapTool)尝试修改NSWindow的框架?

最佳答案

我想出了一个解决方案。它更多地是针对此特定情况的量身定制的解决方案,但希望它将对其他人有用。

为了防止BetterSnapTool和其他人在移动NSWindow的框架时对其进行修改,可以防止在用户拖动窗口时调整窗口的大小,然后在移动完成后重置蒙版。

处理通知NSWindowWillMoveNotification时,可以从NSWindow的样式掩码中删除NSResizableWindowMask

self.styleMask &= ~NSResizableWindowMask;


然后,在通知NSWindowDidMoveNotification的处理程序上,您可以还原样式掩码。

self.styleMask |= NSResizableWindowMask;


确切的实现可能会有所不同,具体取决于窗口拖动行为的自定义方式。就我而言,我具有取决于鼠标事件的自定义拖动行为,并且在右侧的mouseDownmouseUp事件上修改了窗口的蒙版。

关于objective-c - 如何防止其他应用程序更改我的NSWindow框架,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33768076/

10-11 10:31