现在我正在设置一个即将打开的窗口的位置:
-(void) setActiveNodeDialog:(ISKNodeDialogController *)dialog
{
if (activeNodeDialog)
[[activeNodeDialog window] close];
activeNodeDialog = dialog;
if (activeNodeDialog) {
[activeNodeDialog setMainWindowController:self];
NSRect windowRect = [[self window] frame];
NSRect dialogRect = [[activeNodeDialog window] frame];
NSPoint pos;
pos.x = windowRect.origin.x + windowRect.size.width - dialogRect.size.width - 10;
pos.y = windowRect.origin.y + 32;
[[activeNodeDialog window] setFrameOrigin:pos];
[[activeNodeDialog window] makeKeyAndOrderFront:nil];
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,窗口将在显示时"跳转".即使我在使用"makeKeyAndOrderFront"显示窗口之前设置了位置.窗户是NSPanel *.任何想法如何解决跳跃?
在awakeFromNib中设置位置不是一个选项,因为稍后会设置主控制器.
reg*_*633 14
在Interface Builder中,检查窗口时"启动时可见"?如果是这样取消选中它然后你甚至不需要这个代码[[activeNodeDialog window] close] ;. 基本上,如果选中它,则在实例化xib时会自动显示窗口...这是您不想要的.