Прокрутка NSTextView до точного прямоугольника? - PullRequest
0 голосов
/ 26 ноября 2009

У меня есть NSTextView внутри NSScrollView, и я хочу прокрутить его до того места, где он был, после повторного заполнения NSTextView новыми данными. До сих пор я пробовал варианты в приведенном ниже коде, но он никогда не понимал это правильно.

Мне нужен метод setDocumentVisibleRect , но его нет.

NSRect oldVisibleRect = [[[self scrollView] contentView] documentVisibleRect];

[Код для повторного заполнения данных]

[[[self scrollView] contentView] scrollToPoint:newPoint];

Есть идеи?

1 Ответ

2 голосов
/ 27 ноября 2009

Вам нужно быть более конкретным - что по этому поводу "не совсем верно"?

-[NSView scrollRectToVisible:]

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

NSTextView является подклассом NSView (хотя вы всегда должны учитывать, имеет ли данное представление перевернутые координаты ...), поэтому вы можете использовать -scrollRectToVisible:

Кроме того, если изменения содержимого вашего текстового представления в значительной степени не отличаются от прежних, старый видимый прямоугольник не будет таким же, поэтому я не ожидал, что он будет вести себя идеально. Если вы применяете только атрибуты (например, подсветку синтаксиса) к тексту, не нужно будет ничего делать с текстовым представлением (хранилищем текста или контейнером), которое должно потребовать полной перезагрузки (и повторной прокрутки). Я думаю, это сводится к тому, «что именно вы пытаетесь сделать?»

...