Когда представление содержит NSTextField
с включенной подсказкой расширения и текст не подходит, тогда пользователь наводит курсор на поле, OS X показывает всплывающую подсказку расширения. Если вы затем вызываете setStringValue:
для изменения текстового содержимого NSTextField
, размер всплывающей подсказки расширения не обновляется. Например, если исходный текст имеет длину 100 символов, но новый текст имеет длину всего 50 символов, над новым текстом отображается всплывающая подсказка расширения, достаточно большая для 100 символов, содержащих новый текст. Это верно, даже если новая строка полностью помещается в NSTextField
, что обычно препятствует появлению всплывающей подсказки расширения.Как обновить размер всплывающей подсказки расширения после вызова NSTextField setStringValue :?
Противоположность также возникает: если исходная строка соответствует NSTextField
, всплывающая подсказка расширения не появляется. Если новая строка не помещается в пределах NSTextField
, всплывающая подсказка не появляется, хотя она должна.
Внутренний номер NSTextField
NSTextFieldCell
реализует метод expansionFrameWithFrame:inView:
. Что-то (я не уверен, что) называет это один раз и, похоже, кэширует результат. Установка новой строки с использованием setStringValue:
не вызывает эту функцию для вызова снова.
Вызов setNeedsDisplay
на NSTextField после звонка setStringValue:
не исправляет это.
Как я могу получить AppKit для изменения размера всплывающей подсказки расширения?
Я ответил на свой вопрос, но на этот раз я не буду принимать свой ответ, если кто-то придумает менее храбрый способ решить эту проблему. –
Я нахожу это печально забавным, что большинство вопросов какао в хакерском ответе автор вопроса ... – tofutim
Я только что понял, что оставил комментарий выше 3 лет назад. Еще раз спасибо за публикацию этого. – tofutim