NSToolbarItem: „Stellen Sie sicher, dass diese Symbolleiste item hat einen gültigen Rahmen – /min – /max-Größe“?

Seit dem Upgrade auf Mac OS Sierra und die neue XCode version ich bekomme die folgende Fehlermeldung jedes mal, wenn ich starten meiner Anwendung für jedes der NSToolbarItems:

Example 1:
2016-09-29 12:46:58.659879 AppTest[] NSToolbarItem (<NSToolbarItem: >) had to adjust the size of <NSPopUpButton: > from {130, 26} to the expected size of {132, 27}. Make sure that this toolbar item view has a valid frame/min/max size. This is an app bug, please do not file a bug against AppKit or NSToolbar! Break on _NSToolbarAdjustedBorderedControlSizeBreakpoint
Example 2:
2016-09-29 12:46:58.666074 AppTest[] NSToolbarItem (<NSToolbarItem: >) had to adjust the size of <NSButton: > from {60, 25} to the expected size of {62, 27}. Make sure that this toolbar item view has a valid frame/min/max size. This is an app bug, please do not file a bug against AppKit or NSToolbar! Break on _NSToolbarAdjustedBorderedControlSizeBreakpoint

Habe ich versucht Herumspielen im StoryBoard ändern der Größe nicht mit Glück, wenn ich suchte herum, fand ich ein paar Leute, die dieses Problem auch mit dem neuen OS, aber keine hilfreichen Antworten.

Jemand vor dem gleichen Problem, irgendwelche Ratschläge?

Vielen Dank,

Marc

InformationsquelleAutor MMV | 2016-09-29



5 Replies
  1. 1

    War nicht in der Lage, dies zu lösen, die im interface builder. Allerdings überschreiben minSize in der Unterklasse der NSToolbarItem das Problem gelöst.

    - (NSSize)minSize
    {
        if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) {
            /* Overriding this getter seems to be the only solution for runtime error logs like: NSToolbarItem (<APMRegularToolbarItem: 0x60e000039460>) had to adjust the size of <NSButton: 0x60f0001acce0> from {40, 25} to the expected size of {42, 27}. Make sure that this toolbar item view has a valid frame/min/max size. This is an app bug, please do not file a bug against AppKit or NSToolbar! Break on _NSToolbarAdjustedBorderedControlSizeBreakpoint
             */
            return NSMakeSize(42, 27);
        }
        else {
            return [super minSize];
        }
    }
    • Vielen Dank für diese, ging ich mit deinem Ansatz! Probleme Weg!
  2. 1

    Für mich, die änderung der maximale Größe der NSToolbaritem, wie oben erwähnt, hat nicht funktioniert.
    Aber die änderung der mindestens Größe es hat den trick. Warnmeldung ist jetzt Weg.

    • In der Tat, für mich war beides. Vielen Dank für die Klarstellung vomi.
  3. 0

    Ich eigentlich verschwendet viel mehr Zeit sollte ich mir zu diesem Thema, aber loswerden von Warnungen ist eines meiner Dinge. Für mich, egal was ich geändert habe der Symbolleiste auf die Schaltfläche min/max-Größen auf, beschwerte sich über die Größe unrichtig, von einem oder zwei Pixeln. Ich habe versehentlich stolperte auf den folgenden workaround. Meine buttons verwenden, die „normalen“ Steuern Größe. Bei der IB habe ich geändert NSButton von normalen zu klein, Klein, Mini, dann Mini wieder Regelmäßig. Ich habe dann eingestellt, dass die Mindesthöhe der einzelnen NSToolbarItem nach oben, um zwei weniger als das maximum. Ich bin mir nicht sicher, was wirklich passiert in den Prozess. Möglicherweise gibt es eine einfachere Lösung, aber ich habe jetzt verpflichtet mein storyboard und ich bin immer noch halten meinen Atem, dass die Warnungen kommen nicht zurück!

  4. 0

    Ursprünglich wollte ich diese (siehe update unten gedacht):

    http://cocoa-dev.apple.narkive.com/iSLaiCLR/strange-toolbar-item-error

    Zusammenfassung:

    Meine Optionen sind:

    • Ändern Sie die max Größe wie oben, und haben Symbolleiste Elemente, die möglicherweise erscheinen in der falschen Größe pre-Sierra;

    • Ignorieren Sie die Warnung, und alles erscheint, wie es sollte in jeder version;

    Beachten Sie auch, dass:

    Ich
    dachte, ich hätte bereits versucht, diese ohne Erfolg, bis ich erkannte, was war
    passiert: ich hatte bearbeitet die Werte, dann Schloss Sie die Symbolleisten-editor in IB.
    Ich habe jetzt realisiert, dass die änderungen wurden nicht gespeichert, wenn ich wieder
    der Symbolleisten-editor, die alten Werte wurden immer noch angezeigt. Läuft einmal mit
    der Symbolleisten-editor öffnen, scheint gemacht zu haben, die änderungen „übernehmen“. (Und ja,
    Ich habe versucht, die Reinigung auf mehreren Ebenen.)

    UPDATE Dez 2016 ——-

    Aus irgendeinem Grund minSize war immer noch ändern nach dem Zufallsprinzip, von Zeit zu Zeit. In die enden habe ich verknüpft all dies NSToolBarItems auf die folgende Klasse, das hat es fest für mich:

        import Cocoa
    
        class ToolbarItemAvoidMinWarningIssue: NSToolbarItem {
    
        var widthT: CGFloat = 60
        var heightT: CGFloat = 27
    
        override var minSize: NSSize{
            get {
                return NSSize(width: widthT, height: heightT)
            }
            set {
                widthT = newValue.width
            }
        }
    
    }
  5. 0

    Das problem gefunden! Das problem ist, dass bei der IB in Xcode, die minSize-Felder gebunden sind, nur eine Möglichkeit, an den XIB-Quelle. Wenn Sie ändern die NSToolbarItem minSize in IB, speichert es entsprechend. Aber wenn Sie öffnen Sie die Systemsteuerung, entweder durch Wiedereröffnung Xcode, nach dem erneuten öffnen des Projekts, oder auch nur beim erneuten öffnen des Eigenschaften-panel, es zeigt die default-Werte wieder. Also das Bedienfeld „Eigenschaften“ an dieser Stelle könnte zeigen, W 127 H 25 obwohl die Quelle der XIB-Datei (XML) zeigt, W 129 H 27 (was auch immer Werte, die Sie versuchte, zu letzten mal). Also die minSize-Feld-Werte in Xcode IB Bedienfeld „Eigenschaften“ sind nicht richtig eingestellt. Dies führt zu der verwirrenden situation, dass das speichern nach dem erneuten öffnen des Eigenschaften-panel des NSToolbarItem, werden Ihre änderungen wieder überschrieben. Es ist ein Xcode Fehler, so scheint es. @Marius‘ Antwort löst diese Laufzeit, die andere Lösung ist nicht zu öffnen, die NSToolbarItem Eigenschaften wieder nach der Einstellung der minSize.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.