Какао: скрыть пользовательский скроллер textview при запуске приложения - PullRequest
0 голосов
/ 14 мая 2011

Я создал пользовательский скроллер для своего текстового представления (инициировал его в методе scrollview awakeFromNib метода) и теперь я хочу позволить пользователю выбрать, хочет ли он показывать полосу прокрутки при запуске приложения.Проблема в том, что скроллер всегда появляется, даже если я прячу его сразу после создания и устанавливаю его в качестве скроллера скроллвью.Странная вещь заключается в том, что при попытке скрыть скроллер после того, как событие было инициировано (например, нажав на флажок в настройках), скроллер правильно скрывается и отображается.Что я делаю не так?Любая помощь приветствуется!

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

Странно то, что перед добавлением пользовательского скроллера в представление прокрутки я должен использовать setHasVerticalScroller:YES, в противном случае я не могу прокрутить с помощью жеста прокрутки двумя пальцами.Затем, если пользователь не хочет, чтобы полоса прокрутки отображалась, я должен использовать setHasVerticalScroller:NO в методе windowControllerDidLoadNib документа, используя его только после добавления полосы прокрутки в метод awakeFromNib scrollview.Ну, по крайней мере, теперь, кажется, работает!

0 голосов
/ 14 мая 2011

Я всегда использовал IB для настройки полос прокрутки, а затем использовал следующую строку, если я хочу подавить одну из них:

[self.aScrollView setHasHorizontalScroller:NO]; // so only the vertical scrollbar is active

Попробуйте использовать эту строку в awakeFromNib, затем установите для нее значение YES, если выберет пользователь, вместо использования свойства "hidden".

P.S. NSTextView, добавленный в IB, всегда встроен в NSScrollView, и именно прокрутка управляет полосами прокрутки. Поэтому, если вышеприведенное не работает, попробуйте вызвать setHasWhwhatScroller для суперпредставления вашего textview:

[[[aTextView superview] superview] setHasHorizontalScroller:NO];

Если вы получили ошибку «нераспознанный селектор», попробуйте явно привести суперпредставление к NSScrollView (которое будет работать, только если суперпредставление действительно является экземпляром NSScrollView):

[(NSScrollView *)[[aTextView superview] superview] setHasHorizontalScroller:NO];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...