3 个或更多*连续*布局通道以准备显示。错误

3 or more *consecutive* layout passes to prepare to be shown. Error

当我打开 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.

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

- (IBAction)addClicked:(id)sender {

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

}

我也删除了 IB 中 window 的所有限制。所以我不应该在需要重新绘制的布局期间做任何事情。

在网上搜索得到的信息非常少,无论如何我都能找到。我的弹出窗口用于表单输入,因此有 4 个 NSTextFields、一个 NSOutlineView 和一个 NSImage。它还创建了一个隐藏的 WebView,用户不可见,用于服务器处理。

OSX 10.7+

有什么想法吗? 谢谢 杰夫

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