2012-03-31 4 views
3

Я получаю предупреждение, я не в полной мере понять, каждый раз, когда я запускаю мое приложение:предупреждение Autolayout в Mac OS X

Layout still needs update after calling -[WebHTMLView layout]. WebHTMLView or one of its superclasses may have overridden -layout without calling super. Or, something may have dirtied layout in the middle of updating it. Both are programming errors in Cocoa Autolayout. The former is pretty likely to arise if some pre-Cocoa Autolayout class had a method called layout, but it should be fixed.

(я видел это related question, но ответ при условии, решает некоторые другие вопрос, таким образом, мой вопрос.) Предупреждение появляется, как только я добавляю веб-представление в свое приложение. Что это значит и как мне исправить эту проблему?

ответ

3

Похоже, что - (void)layout выполнен в WebHTMLView. Источник для WebKit доступен на странице с открытым исходным кодом Apple для просмотра.

http://www.opensource.apple.com/source/WebKit/WebKit-7534.53.11/mac/WebView/WebHTMLView.mm

В документации Auto Layout, в нем говорится, что вам нужно реализовать только «макет», если вам нужна пользовательская логика для компоновки подвидов при использовании Auto Layout. Далее говорится, что вы всегда должны звонить [super layout] в своей пользовательской реализации. Этого не происходит с WebHTMLView.

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html%23//apple_ref/occ/instm/NSView/layout

Это сообщение может вероятно быть проигнорировано для вашего проекта. То же самое происходит для меня в новом новом проекте.

+0

Есть ли для этого радар? – adib

+1

Я получил это с помощью простого NSTableView при перетаскивании элемента. Я не реализовал какой-либо метод макета. Так что это довольно пахнет ошибкой в ​​реализации Apple Swifty Cocoa. Радар? Наверное, нет. У меня все еще есть более полутора десятков открытых ошибок компилятора, о которых даже не коснулся Apple :-( –

0

Кроме отмеченных NSTableView с перетаскиванием, я узнал, что если вы откроете NSFontManager, это всегда будет показывать это сообщение. Не только с Swift, но и с собственной демо-программой Apple CoreTextArcCocoa. Так что это определенно некоторая ошибка в хитростях Apple.

+0

To: Thomas, может быть, он исходит из NSFontPanel вместо NSFontManager. –

+0

@JiulongZhao Конечно, это панель шрифтов, которая появляется из Изменить меню. –

 Смежные вопросы

  • Нет связанных вопросов^_^