2016-07-25 43 views
9

Wenn ich einen NSPopover öffne ich die folgende Fehlermeldung erhalten:3 oder mehr * aufeinanderfolgende * Layouts werden übergeben, damit sie angezeigt werden können. Fehler

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. 

Dies hat gerade erst begonnen, in einer aktuellen Build erscheinen und ich kann nicht finden, was es verursacht. Ich habe alle prep Code entfernt, bevor die popover gezeigt wird, so dass es im Grunde ruft:

- (IBAction)addClicked:(id)sender { 

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

} 

ich alle Einschränkungen aus dem Fenster in IB zu entfernt haben. Also sollte ich während des Layouts nichts machen, was ein Repaint erfordert.

Suche im Web kommt mit sehr wenig Info, was ich sowieso finden könnte. Mein Popover wird für eine Formulareingabe verwendet und hat daher 4 NSTextFields, einen NSOutlineView und einen NSImage. Es erstellt auch eine versteckte Webansicht, die für den Benutzer nicht sichtbar ist und für die Serververarbeitung verwendet wird.

OSX 10.7+

Irgendwelche Ideen? Danke Geoff

+0

Problem behoben. Wenn Sie diesen Fehler jemals bekommen, habe ich ihn losgeworden, indem ich den Inspektor für Ansichtseffekte in IB ausgewählt habe und ein Häkchen neben (für das gesamte Popup) für den Core-Animationslayer gesetzt habe. Jetzt kann ich quadratische Knöpfe mit Vorlagenbildern und keine obskuren Warnungen haben. – GeoffCoope

+1

Sie sollten das wahrscheinlich als Antwort posten. – tbodt

+0

Danke. Habe das gemacht. – GeoffCoope

Antwort

7

Wenn Sie diesen Fehler jemals bekommen, habe ich ihn entfernt, indem ich den View Effects Inspector in IB ausgewählt habe und ein Häkchen neben (die gesamte Popup-Ansicht) für den Core Animation Layer gesetzt habe. Jetzt kann ich quadratische Knöpfe mit Vorlagenbildern und keine obskuren Warnungen haben.