2012-03-21 4 views

ответ

0

Вы можете наблюдать содержание смещения в scrollViewDidScroll: и установите й значение значение, которое вы хотели.

Редактировать: Итак, тогда. Вы видели это: Constraining Scrolling?

+1

Я на макинтоше, ссылка вы дали мне для прошивки – aneuryzm

+0

Спасибо за голосование вниз ... – dasdom

+0

Удалено, как вы пожелаете – aneuryzm

-7

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

- (void)setHasVerticalScroller:(BOOL)flag; 

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

Вы также можете установить это в Interface Builder.

+5

Он скрывает скроллер, но прокрутка по-прежнему возможна с помощью жестов – aneuryzm

4

Попробуйте это в 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]); 
+0

Отлично! Благодаря!! – Jad

0

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

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

Чтобы решить эту проблему, я подклассы в 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); 
    } 
} 

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

Смежные вопросы