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

时间:2012-04-03 11:08:50

标签: objective-c cocoa nswindow nsapplication

我想将一个窗口显示为工作表,它完美地运行了以下代码:

[NSApp beginSheet:mySheet
   modalForWindow:myWindow
    modalDelegate:nil 
   didEndSelector:NULL
      contextInfo:NULL];

然而,有一个小问题:

  • 我正在使用Chromium Tabs的实现,并且 - 由于某些原因可能与Chromium Tabs的内部逻辑有关 - 表单看起来似乎比我想要的更低...... (也许这就是被视为“边界”的窗口,但无论如何......)

enter image description here

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

1 个答案:

答案 0 :(得分: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;
}