2012-03-21 126 views

回答

0

你可以观察到的内容scrollViewDidScroll:偏移,并设置x值到你喜欢的值。

编辑: 好的,那么。你见过这个:Constraining Scrolling

+1

我在Mac上,链接你给我的是针对iOS – aneuryzm 2012-03-21 08:53:09

+0

感谢向下表决... – dasdom 2012-03-21 09:26:55

+0

随意移除 – aneuryzm 2012-03-21 09:33:54

-7

在想,如果您在

- (void)setHasVerticalScroller:(BOOL)flag; 

来到禁用垂直滚动条?

您也可以在Interface Builder中进行设置。

+5

它隐藏了滚动条,但滚动仍然可以通过手势 – aneuryzm 2012-03-22 10:39:45

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 2017-03-05 17:05:51

0

我喜欢上面伊万的答案。然而,在我的特殊情况下,我有一个表视图(垂直滚动),其中每行包含一个集合视图(水平滚动)。

当用户试图向上/向下滚动时,如果鼠标悬停在某个集合视图上,它们将无法向上或向下滚动。

要解决这个问题,我子类包含所述NSCollectionViews的NSScrollView和我overrided这种方法用下面的代码:

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); 
    } 
} 

这样,它检查是否用户主要是在一个方向上滚动,并处理它适当。