如何确定子窗口是否已由用户直接移动,而不是由于其父窗口被移动?
在这两种情况下我都会收到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];
}
}