3个或更多*连续*布局通行证准备显示.错误

Geo*_*ope 9 macos cocoa warnings objective-c nspopover

当我打开NSPopover时,我收到以下错误:

WARNING: <NSPopover: 0x618000120780> needed 3 or more *consecutive* layout
passes to prepare to be shown. Verify that nothing in your view hierarchy
is aggressively dirtying layout during layout, as this will likely
cause problems elsewhere.
Run Code Online (Sandbox Code Playgroud)

这刚刚开始出现在最近的版本中,我无法找到导致它的原因.我在弹出窗口显示之前删除了所有准备代码,因此它基本上调用:

- (IBAction)addClicked:(id)sender {

[[self addPopover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxYEdge];

}
Run Code Online (Sandbox Code Playgroud)

我也删除了IB窗口中的所有约束.所以我不应该在需要重画的布局中做任何事情.

搜索网络的信息非常少,无论如何我都能找到.我的popover用于表单输入,因此有4个NSTextFields,一个NSOutlineView和一个NSImage.它还会创建一个隐藏的WebView,用户无法看到它并用于服务器处理.

OSX 10.7+

有任何想法吗?谢谢杰夫

Geo*_*ope 7

如果你遇到这个错误,我通过在IB中选择视图效果检查器来删除它,并在核心动画层的视图旁边放置一个复选标记(整个弹出视图).现在我可以使用带有模板图像的方形按钮,并且没有模糊的警告.