使用beginSheet后定位工作表:modalForWindow:?

Dr.*_*eon 2 cocoa objective-c nswindow nsapplication

我希望将窗口显示为工作表,使用以下代码完美运行:

[NSApp beginSheet:mySheet
   modalForWindow:myWindow
    modalDelegate:nil 
   didEndSelector:NULL
      contextInfo:NULL];
Run Code Online (Sandbox Code Playgroud)

但是,有一个小问题:

  • 我正在使用Chromium Tabs的实现,并且 - 由于某些原因可能与Chromium Tabs的内部逻辑相关 - 表单看起来似乎比我希望它更低......(也许这就是考虑的因素)作为窗口"边界",但无论如何...)

在此输入图像描述

怎么了?我怎么能解决这个问题?

Dr.*_*eon 8

刚发现它:

在窗口的委托,我们实现window:willPositionSheet:usingRect:这样的

- (NSRect)window:(NSWindow *)window willPositionSheet:(NSWindow *)sheet 
       usingRect:(NSRect)rect 
{
    rect.origin.y += 11;  // or as much as we need
    return rect;
}
Run Code Online (Sandbox Code Playgroud)