2016-09-29 24 views
9

С обновлением до Mac OS Sierra и новой версии XCode я получаю следующую ошибку каждый раз, когда я запускаю мое приложение для каждого из NSToolbarItems:NSToolbarItem: «Убедитесь, что этот элемент панели инструментов имеет действительный размер кадра/мин/макс»?

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 

Я попытался Мессинг вокруг в раскадровке изменения размера без везения , когда я искал вокруг, я нашел пару людей, имеющих эту проблему, а также новую ОС, но никаких полезных ответов.

Любой, столкнувшись с одной и той же проблемой, любой совет?

Спасибо большое,

Марк

ответ

1

Не удалось решить эту проблему в интерфейсе. Однако переопределение minSize в подклассе NSToolbarItem решило проблему.

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

Спасибо за это, я пошел с вашим подходом! Проблемы исчезли! – MMV

0

Первоначально я попробовал это (см обновление ниже мысли):

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

Сведение:

Мои опции:

  • Измените максимальный размер, как указано выше, и на панели инструментов могут появиться неправильные размеры до Сьерра;

  • Игнорируйте предупреждение и в каждом варианте все должно выглядеть так, как должно быть;

отметить также, что:

Я думал, что я уже пробовал это, но безуспешно, пока я не понял, что было происходит: я редактировал значения, а затем закрыл панель инструментов редактора в IB. Теперь я понял, что изменения не были сохранены; когда я снова открыл редактор панели инструментов, старые значения все еще показывались. Запуск один раз редактор панели инструментов открытой, кажется, сделал считать перемены». (И да, я пытался очистки на различных этапах.)

UPDATE декабря 2016 -------

.

по какой-то причине MinSize еще изменяющемся случайным образом время от времени в конце концов я связан все это NSToolBarItems к следующему классу, это установил ее для меня:

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

для меня, изменение максимальный размер NSToolbaritem, как указано выше, не работает. Но изменение минимум его размер сделал трюк. Предупреждающее сообщение исчезло.

+0

Действительно, для меня были оба. Спасибо за разъяснение воми. – MMV

0

Я на самом деле потратил больше времени на то, что должен был по этой проблеме, но избавление от предупреждений - одна из моих вещей. Для меня, независимо от того, что я изменил на панели инструментов кнопки min/max размеры, он жаловался на неправильные размеры одного или двух пикселей. Я случайно наткнулся на следующее обходное решение. Мои кнопки используют размер регулятора «Обычный».В IB я менял каждый NSButton от обычного до малого, от малого до мини, а затем Mini обратно в обычный. Затем я отрегулировал минимальную высоту каждого NSToolbarItem вверх, чтобы быть двумя меньше максимального. Я не уверен, что на самом деле произошло в этом процессе. Может быть, более простое решение, но я теперь сделал свою раскадровку, и я все еще задерживаю дыхание, чтобы предупреждения не возвращались!

0

Обнаружена проблема! Проблема в том, что в IB в Xcode поля minSize привязаны только к источнику XIB в одну сторону. Если вы измените минимальный размер NSToolbarItem в IB, он сохранит его соответствующим образом. Но если вы снова открываете панель, либо путем повторного открытия Xcode, повторного открытия проекта или даже просто повторного открытия панели свойств, он снова отображает значения по умолчанию. Таким образом, панель свойств в этот момент может показать W 127 H 25, даже если источник XIB-файла (XML) показывает W 129 H 27 (любые значения, которые вы пытались установить в последний раз). Поэтому значения поля minSize в панели свойств Xcode IB установлены неправильно. Это приводит к запутанной ситуации, когда сохранение после повторного открытия панели свойств объекта NSToolbarItem ваши изменения будут перезаписаны снова. Кажется, это ошибка Xcode. Ответ @Marius решает эту рабочую среду, а другое решение - не открывать свойства NSToolbarItem снова после установки minSize.