Как я могу отключить вертикальную прокрутку NSScrollView? - PullRequest
4 голосов
/ 21 марта 2012

Как отключить вертикальную прокрутку NSScrollView?

Я не могу найти быстрое решение в Google.

Спасибо

Ответы [ 4 ]

8 голосов
/ 16 августа 2016

Попробуйте это в подклассе NSScrollView:

- (void)scrollWheel:(NSEvent *)theEvent
{
    [super scrollWheel:theEvent];

    if ([theEvent deltaY] != 0.0)
    {
        [[self nextResponder] scrollWheel:theEvent];
    }
}

Также вы можете войти в систему:

NSLog(@"user scrolled %f horizontally and %f vertically", [theEvent deltaX], [theEvent deltaY]);
1 голос
/ 22 июня 2017

Мне нравится ответ Ивана выше.Однако в моем конкретном случае у меня было табличное представление (вертикальная прокрутка), где каждая строка содержала представление коллекции (горизонтальная прокрутка).

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

Чтобы решить эту проблему, я подклассифицировал NSScrollView, который содержал NSCollectionViews, и переопределил этот метод следующим кодом:

override func scrollWheel(with event: NSEvent)
{
    if (fabs(Double(event.deltaY)) > fabs(Double(event.deltaX))) {
        self.nextResponder?.scrollWheel(with: event);
    } else {
        super.scrollWheel(with: event);
    }
}

Таким образом, он проверяет, выполняет ли пользователь преимущественно прокрутку в одном направлении, и обрабатывает его соответствующим образом.

0 голосов
/ 22 марта 2012

было интересно, если вы столкнулись

- (void)setHasVerticalScroller:(BOOL)flag;

отключить вертикальную полосу прокрутки?

Вы также можете установить это в Интерфейсном Разработчике.

0 голосов
/ 21 марта 2012

Вы можете наблюдать смещение содержимого в scrollViewDidScroll: и установить значение x равным желаемому.

Edit: Хорошо, тогда. Вы видели это: Ограничивающая прокрутка ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...