是否可以“隐藏”NSScrollView的滚动条并仍然可以获得手势滚动行为?
答案 0 :(得分:4)
创建NSScroller子类并将其设置为NSScrollView实例的垂直/水平滚动条。
NSScroller子类应该覆盖它(10.7及以上):
+ (CGFloat)scrollerWidthForControlSize:(NSControlSize)controlSize scrollerStyle:(NSScrollerStyle)scrollerStyle {
return 0;
}
答案 1 :(得分: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];
}
来源:jmk
中的https://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];
答案 2 :(得分:1)
使scrollview不显示滚动条而不响应手势滚动:
-setHasHorizontalScroller:NO
导致显示禁用的滚动条,但它会响应手势滚动:
-setHasHorizontalScroller:YES
-setHidden:YES
答案 3 :(得分:1)
是的,有可能。初始化scrollView后立即尝试。
self.scrollView.wantsLayer = YES;
我已经让这个工作没有隐藏NSScroller
子类而没有触及setHasVerticalScroller:
。此外,如果self.scrollView
是覆盖drawRect:
的子类,请尝试将其关闭,以确保您在那里做的事情不会导致问题。
答案 4 :(得分:0)
为什么不试试呢?
回答这个问题:是的,如果用户的鼠标带有滚轮或具有滚动功能的触控板,尽管滚动条不可见,仍然可以滚动视图。