我实施的NSWindow具有自己的捕捉行为,以及与标准窗口略有不同的其他一组功能。
当使用像BetterSnapTool这样的辅助软件时,将NSWindow拖到边缘会触发BetterSnapTool的捕捉,干扰我的NSWindow的捕捉。
如何阻止其他应用程序(如BetterSnapTool)尝试修改我的NSWindow框架?
答案 0 :(得分:1)
我为此找到了解决方案。它更适合这种特定场景的定制解决方案,但希望它对其他人有用。
为了防止BetterSnapTool和其他人在您移动它时修改NSWindow
的框架,您可以在用户拖动窗口时阻止在窗口上调整大小,然后在移动完成后重置蒙版。
处理通知NSWindowWillMoveNotification
时,您可以从NSWindow的样式掩码中删除NSResizableWindowMask
:
self.styleMask &= ~NSResizableWindowMask;
然后,在通知NSWindowDidMoveNotification
的处理程序上,您可以恢复样式掩码。
self.styleMask |= NSResizableWindowMask;
具体实现可能会有所不同,具体取决于窗口拖动行为的自定义方式。在我的情况下,我有自定义拖动行为取决于鼠标事件,我在右mouseDown
和mouseUp
事件修改窗口的掩码。