【发布时间】:2012-05-06 16:26:28
【问题描述】:
如何确定子窗口是否由用户直接移动,而不是由于其父窗口被移动?
在这两种情况下我都会收到NSWindowDidMoveNotification 通知。
我想我可以在 NSWindowWillMoveNotification 处理程序中测试父框架原点,并将其与 NSWindowDidMoveNotification 处理程序中的原点进行比较,但也许有更好的方法吗?
这是我目前的解决方案:
- (void)windowWillMove:(NSNotification *)notification
{
NSWindow *window = [notification object];
_parentOrigin = [[window parentWindow] frame].origin;
}
- (void)windowDidMove:(NSNotification *)notification
{
NSWindow *window = [notification object];
NSPoint newParentOrigin = [[window parentWindow] frame].origin;
if (_parentOrigin.x == newParentOrigin.x &&
_parentOrigin.y == newParentOrigin.y)
{
// The parent hasn't moved, therefore the user moved the window directly...
[window doThing];
}
}
【问题讨论】:
标签: objective-c macos cocoa nswindow