2016-03-21 3 views
0

Мне нужно знать, когда изменяется TextKitNSTextContainer, поэтому я могу обновлять некоторые кеши в своем NSLayoutManager. Как я могу получать уведомления при изменении size? Действительно ли TextKitNSTextContainer - size), в частности, поддержка KVO? Я просмотрел заголовок NSTextContainer.h и NSTextContainer documetation, и я ничего не могу найти об этом в любом случае.Как получать уведомления при изменении размера NSTextContainer в TextKit?

ответ

1

NSTextContainer предполагается назвать -[NSLayoutManager textContainerChangedGeometry:] на его NSLayoutManager, когда его размер или форма изменения:

Этот метод вызывается автоматически другими компонентами текста системы; вам редко приходится ссылаться на него напрямую. Однако подклассы NSTextContainer должны вызывать этот метод в любое время, когда их размер изменяется (текстовый контейнер, который динамически настраивает свою форму , чтобы обернуть текст вокруг размещенной графики, например, должен сделать это, когда графику добавлено, перемещено , или удалены).

Я не проверял это, чтобы определить, если она требует, чтобы heightTracksTextView или widthTracksTextView быть установлен на NSTextContainer; что verticallyResizable или horizontallyResizable установить на NSLayoutManager; или что программный вызов -[NSTextContainer setSize:] или -[NSTextContainer setSimpleRectangularTextContainer:] будет автоматически вызывать -[NSLayoutManager textContainerChangedGeometry:], как указано.

+0

Точно. Это должен быть принятый ответ. –