Как я могу заставить Какао NSTextView расти, поскольку пользователь вводит в него? - PullRequest
6 голосов
/ 24 августа 2011

Для приложения Какао, которое я пишу, я хотел бы поддержать панель справа от основного содержимого документа, где пользователи могут добавлять заметки для текущего выбранного содержимого документа. (Если вы знакомы с Microsoft Word или Scrivener, эта функция похожа на функцию комментариев в этих приложениях.) Scrivener хорошо выполняет свою работу, начиная с текстового поля, размер которого соответствует размеру текста по умолчанию, а затем увеличивая его по мере роста пользователя. вводит в него. Я хотел бы реализовать то же поведение для моего приложения Какао.

Какая основная стратегия?

Ответы [ 2 ]

0 голосов
/ 19 октября 2016

Пользовательский не NSScrollView встроенный NSTextView делает свое дело.Смотрите мой ответ здесь Как мне заставить NSTextView расти с текстом? .

0 голосов
/ 31 мая 2012

Существуют методы делегата, которые позволяют вам захватывать фактические нажатия клавиш по мере их поступления.

Реализуйте приведенный ниже метод делегата для отставки первого респондента на основе клавиатуры

-(BOOL)textFieldShouldReturn:(UITextField *)textfield

Реализацияметод делегата ниже, чтобы определить, когда фокус был возвращен обратно в TextField.Вы также можете выполнить удаление текущего текста или сохранить текст, который уже был там, если хотите

-(void)textFieldDidBeginEditing:(UITextField *)textfield

Реализуйте приведенный ниже метод делегата, чтобы обнаружить введенные символы и где (на основеположение каретки), и, по существу, добавьте символы в вашу частную и отображаемую строку (отображаемую в текстовое поле, которое есть)

-(BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString

Реализуйте приведенный ниже метод делегата, чтобы определить, когда редактирование завершено, чтобы вы могливыполнить любую другую очистку и т. д. ... которую вы хотите сделать.

-(void)textFieldDidEndEditing:(UITextField *)textField

Я свяжусь с вами по поводу динамического изменения размера самого вашего TextView, но это (по крайней мере на iOS), как я видел, имеетрешение, и в какой-то момент я использовал его.Вы по существу сделаете статический размер шрифта, возможно, статическую ширину, затем отредактируете свою высоту, основываясь на том, сколько у вас линий, или вы можете оставить статическую высоту, и изменить свою ширину, основываясь на символах и т. Д., До вас.

Вот большой набор ответов в StackOverflow о динамическом определении размера Как мне определить размер UITextView для его содержимого?

Так что, если вы объедините распознавание нажатия клавиш с динамическимпроклейка у вас должна быть !!!

...