2011-05-17 44 views

回答

0

为什么你不试一试呢?

为了回答这个问题:是的,如果用户具有与鼠标滚轮或滚动功能的触摸板,它仍然是可能的滚动视图,尽管滚动条是不可见的。

+3

不知道我做错了。当setHasHorizo​​ntalScroller:YES时,我可以用我的触控板滚动,但是如果setHasHorizo​​ntalScroller:NO,则不能滚动。 – NuBee 2011-05-17 18:26:45

1

导致滚动视图不显示滚动条,而不是手势滚动回应:

-setHasHorizontalScroller:NO 

导致显示被禁用的滚动条,但它响应手势滚动:

-setHasHorizontalScroller:YES 
-setHidden:YES 
+0

我想,也许你的意思是“YES导致残疾滚轮**不显示**,但它响应手势滚动”,不是吗? – 2012-04-21 18:38:55

4

创建NSScroller子类并将其设置为NSScrollView实例的垂直/水平滚动条。

的NSScroller子类应当覆盖本(10.7及以上):

+ (CGFloat)scrollerWidthForControlSize:(NSControlSize)controlSize scrollerStyle:(NSScrollerStyle)scrollerStyle { 
return 0; 
} 
+0

不适用于10.8。滚动仍然禁用。 – svoisen 2013-03-01 00:30:13

3

这肯定是在了AppKit的错误。我能得到这个工作10.8.5使用下列解决方案:

1)子类NSScroller(首选方法)

+ (BOOL)isCompatibleWithOverlayScrollers 
{ 
    // Let this scroller sit on top of the content view, rather than next to it. 
    return YES; 
} 

- (void)setHidden:(BOOL)flag 
{ 
    // Ugly hack: make sure we are always hidden. 
    [super setHidden:YES]; 
} 

来源jmkhttps://stackoverflow.com/a/12960795/836263

2)反弹和动量似乎使用传统的风格时破裂。它也部分打破了Apple的scroll synchronization代码。如果一个是NSScrollerStyleOverlay而另一个是NSScrollerStyleLegacy,它将导致滚动视图重置滚动位置。如果滚动覆盖式滚动视图,则滚动旧式样式,它会将两个滚动视图重置为顶部y = 0滚动偏移量。

[self.scrollView setHasVerticalScroller:YES]; 
[self.scrollView setScrollerStyle:NSScrollerStyleLegacy]; 
[self.scrollView setHasVerticalScroller:NO]; 
1

是的,这是可能的。初始化scrollView后尽快尝试一下。

self.scrollView.wantsLayer = YES; 

我已经得到了这个没有隐藏的NSScroller子类,而不触及setHasVerticalScroller:工作。另外,如果self.scrollView是覆盖drawRect:的子类,请尝试关闭该功能以确保您在那里执行的操作不会导致问题。