親ウィンドウが移動された結果ではなく、子ウィンドウがユーザーによって直接移動されたかどうかを確認するにはどうすればよいですか?
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];
}
}