1
如何確定子窗口是否由用戶直接移動,而不是由於其父窗口被移動?確定子窗口是由用戶移動還是由於父窗口移動?
我在這兩種情況下都會收到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];
}
}
這很有趣。你能解釋爲什麼'關鍵'地位在這裏很重要嗎? – trojanfoe
沒關係;我想我明白。我會在早上嘗試一下,讓你知道我如何繼續;如果它有效,這是一個更好的解決方案,需要少一個伊娃和一個較少的委託方法。 – trojanfoe
我編輯我的答案是更完整的,所以測試isKey的原因對其他人都是清楚的。 – rdelmar