2016-09-29 28 views
9

Od aktualizacji do wersji Mac OS Sierra i nowej wersji XCode pojawia się następujący błąd za każdym razem, gdy uruchomić mojej aplikacji dla każdego z NSToolbarItems:NSToolbarItem: "Upewnij się, że ten element paska narzędzi ma prawidłowy rozmiar ramki/min/maks."?

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 

Próbowałem aprowizacji w storyboard zmiany rozmiaru bez powodzenia , kiedy przeszukałem, znalazłem kilka osób, które miały ten problem z nowym systemem operacyjnym, ale bez przydatnych odpowiedzi.

Ktoś mający ten sam problem, jakieś rady?

dziękuję,

Marc

Odpowiedz

1

Nie udało się rozwiązać tego problemu w narzędziu do tworzenia interfejsu. Jednak nadpisanie minSize w podklasie NSToolbarItem rozwiązało problem.

- (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]; 
    } 
} 
+0

Dzięki za to, poszedłem z twoim podejściem! Problemy zniknęły! – MMV

0

Początkowo próbowałem to (patrz Aktualizacja poniżej myśli):

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

Podsumowując:

moje opcje to:

  • Zmień maksymalny rozmiar, jak powyżej, i ewentualnie elementy paska narzędzi mogą mieć nieprawidłowy rozmiar pre-Sierra;

  • Zignoruj ​​ostrzeżenie i upewnij się, że wszystko wygląda tak, jak powinno w każdej wersji;

Należy również pamiętać, że:

I myślałem, że już próbowałem bezskutecznie, aż zdałem sobie sprawę, co było dzieje: ja edytowane wartości, a następnie zamknął edytora paska narzędzi w IB. Teraz zrozumiałem, że zmiany nie zostały zapisane; Po ponownym otwarciu edytora paska narzędzi stare wartości nadal były wyświetlane. Uruchamianie raz redaktor Pasek otwarte wydaje się dokonały podejmuje Zmiany””. (I tak, Próbowałem czyszczenia na różnych etapach.)

UPDATE grudnia 2016 -------

.

z jakiegoś powodu minSize wciąż zmieniającej się przypadkowo od czasu do czasu w końcu mam związane to wszystko NSToolBarItems do następnej klasy, to jest ustalone to dla mnie:

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 
     } 
    } 

} 
1

dla mnie, zmieniając maksymalny rozmiar: NSToolbaritem, jak wspomniano powyżej, nie działa. Ale zmiana rozmiaru minimalnie załatwiła sprawę. Wiadomość ostrzegawcza już nie istnieje.

+0

Rzeczywiście, dla mnie było jedno i drugie. Dzięki za wyjaśnienie vomi. – MMV

0

Właściwie zmarnowałem znacznie więcej czasu, niż powinienem to zrobić, ale pozbycie się ostrzeżeń jest jedną z moich rzeczy. Dla mnie, niezależnie od tego, co zmieniłem przycisk na pasku narzędziowym min/max, skarżyłem się, że rozmiary są nieprawidłowe o jeden lub dwa piksele. Przypadkowo natknąłem się na następujące obejście. Moje przyciski używają "regularnego" rozmiaru kontrolnego.W IB zmieniłem każdy NSButton z Regular na Small, Small na Mini, a następnie Mini z powrotem na Regular. Następnie dostosowałem minimalną wysokość każdego z NSToolbarItem w górę, aby uzyskać dwa mniejsze wartości niż maksymalna. Nie jestem pewien, co naprawdę się wydarzyło w tym procesie. Być może istnieje prostsze rozwiązanie, ale teraz popełniłem mój scenariusz i wciąż wstrzymuję oddech, że ostrzeżenia nie wracają!

0

Znalazłem problem! Problem polega na tym, że w IB w Xcode pola minSize są powiązane tylko w jedną stronę ze źródłem XIB. Jeśli zmienisz minSize NSToolbarItem w IB, to odpowiednio go zapisze. Ale jeśli ponownie otworzysz panel, albo ponownie otwierając Xcode, ponownie otwierając projekt, a nawet po prostu ponownie otwierając panel właściwości, pokazuje ponownie wartości domyślne. Tak więc panel właściwości w tym miejscu może pokazywać W 127 H 25, mimo że źródło pliku XIB (XML) pokazuje W 129 H 27 (dowolne wartości, które próbowałeś ustawić ostatni raz). Tak więc wartości pola minSize w panelu Właściwości Xcode IB nie są ustawione poprawnie. Prowadzi to do mylącej sytuacji, w której zapisanie po ponownym otwarciu panelu Właściwości NSToolbarItem spowoduje, że twoje zmiany zostaną nadpisane ponownie. Wygląda na błąd Xcode. Odpowiedź @Marius rozwiązuje ten program, innym rozwiązaniem nie jest ponowne otwarcie właściwości NSToolbarItem po ustawieniu minSize.

Powiązane problemy