Как я могу отключить вертикальную прокрутку NSScrollView?
Как я могу отключить вертикальную прокрутку NSScrollView?
Я не могу найти быстрое решение в Google.
Спасибо
4 ответа
Вы можете наблюдать смещение содержимого в scrollViewDidScroll: и установить значение x равным желаемому.
Редактировать: Хорошо, тогда. Вы видели это: ограниченная прокрутка?
Попробуйте это в подклассе 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]);
Мне нравится ответ Ивана выше. Однако в моем конкретном случае у меня было табличное представление (вертикальная прокрутка), где каждая строка содержала представление коллекции (горизонтальная прокрутка).
Когда пользователи пытались прокрутить вверх / вниз, если на одном из представлений коллекции была наведена мышь, они не могли прокручивать вверх или вниз.
Чтобы решить эту проблему, я создал подкласс 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);
}
}
Таким образом, он проверяет, выполняет ли пользователь преимущественно прокрутку в одном направлении, и обрабатывает его соответствующим образом.
Было интересно, если вы столкнулись
- (void)setHasVerticalScroller:(BOOL)flag;
отключить вертикальную полосу прокрутки?
Вы также можете установить это в Интерфейсном Разработчике.